2011-05-31 19 views
6

किसी ऑब्जेक्ट के साथ ListView आइटम को टाई करने का सबसे अच्छा तरीका क्या है जब मैं आइटम को एक सूचीदृश्य में दूसरे स्थान पर ले जाता हूं तो मैं अभी भी यह निर्दिष्ट करने में सक्षम हूं कि यह किस ऑब्जेक्ट को सौंपा गया है। उदाहरण के लिए, मेरे पास Cards ऑब्जेक्ट है। ये सभी allCardsListView में सूचीबद्ध हैं। मेरे पास एक और selectedCardsListView और एक बटन है जो चयनित आइटम को एक सूचीदृश्य से दूसरे में ले जाता है। जब मैंने अपना चयन किया तो मुझे Card ऑब्जेक्ट्स की सूची प्राप्त करने की आवश्यकता है जो selectedCards ListView में स्थानांतरित हो गया था।सी # टाई सूची वस्तुओं के साथ आइटम देखें

+0

यह प्रश्न वास्तव में स्पष्ट नहीं है। यदि आप उन ऑब्जेक्ट्स को 'चयनित कार्ड' में ले जाते हैं, तो क्या वह सूची नहीं है जिसे आप चाहते हैं? –

+0

@Steven: ListView में केवल कार्ड के नाम हैं .. – hs2d

+0

बस थोड़ा सा सुझाव, यदि आप सभी कार्ड्स * को उपलब्ध कार्ड * का नाम बदल देंगे तो यह क्लीनर होगा ... –

उत्तर

5

@ CharithJ के जवाब पर विस्तार करने के लिए, यह कैसे आप टैग संपत्ति का प्रयोग करेंगे है ।

+0

मुझे पता है कि यह जवाब पुराना है, लेकिन यह *** बिल्कुल *** था जो मैं ढूंढ रहा था। मैं 'टैग' संपत्ति को कभी नहीं जानता था, न ही उसने क्या किया या यह क्या था, इसलिए एक गुच्छा धन्यवाद: डी – Nolonar

1

पहला तरीका।

ऑब्जेक्ट को ListViewItem की टैग प्रॉपर्टी पर असाइन करें। चयनित वस्तुओं के टैग प्राप्त करें।

दूसरा रास्ता।

सूची में अदृश्य उप-चिह्न जोड़ें देखें जिसमें कार्ड ऑब्जेक्ट की आईडी है। फिर चयनित आइटम आईडी का उपयोग करके कार्ड पाएं।

5

आप देखे जाने योग्य संग्रह का उपयोग कर सकते हैं, और अपने Card कक्षा के लिए डेटामैप्लेट बना सकते हैं। फिर आप संग्रह में अपने ListView को बांधें और यह आपके लिए सभी काम करता है। जब आप ObservableCollection पर कोई आइटम जोड़ते हैं तो ListView स्वचालित रूप से फिर से चला जाता है।

ListView allCardsListView = new ListView(); 
    ListView selectedCardsListView = new ListView(); 
    List<Card> allCards = new List<Card>(); 
    List<Card> selectedCards = new List<Card>(); 
    public Form1() 
    { 
     InitializeComponent(); 


     foreach (Card selectedCard in selectedCards) 
     { 
      ListViewItem item = new ListViewItem(selectedCard.Name); 
      item.Tag = selectedCard; 
      selectedCardsListView.Items.Add(item); 
     } 
     foreach (Card card in allCards) 
     { 
      ListViewItem item = new ListViewItem(card.Name); 
      item.Tag = card; 
      allCardsListView.Items.Add(new ListViewItem(card.Name)); 
     } 

     Button button = new Button(); 
     button.Click += new EventHandler(MoveSelectedClick); 
    } 

    void MoveSelectedClick(object sender, EventArgs e) 
    { 
     foreach (ListViewItem item in allCardsListView.SelectedItems) 
     { 
      Card card = (Card) item.Tag; 
      //Do whatever with the card 
     } 
    } 

जाहिर है आप अपने खुद के कोड के लिए यह अनुकूल करने के लिए की आवश्यकता होगी, लेकिन यह आपके लिए प्रारंभ करने चाहिए:

using System.Collections.ObjectModel; 

<ListView Name="allCardsView" Source="{Binding}"> 
    <ListView.ItemTemplate> 
     <DataTemplate DataType="{x:Type yourXmlns:Card}"> 
      //Your template here 
     </DataTemplate> 
    </ListView.ItemTemplate> 
</ListView> 
<ListView Name="selectedCardsView" Source="{Binding}"> 
    <ListView.ItemTemplate> 
     <DataTemplate DataType="{x:Type yourXmlns:Card}"> 
      //Your template here 
     </DataTemplate> 
    </ListView.ItemTemplate> 
</ListView> 

ObservableCollection<Card> allCards = new ObservableCollection<Card>(); 
ObservableCollection<Card> selectedCards = new ObservableCollection<Card>(); 
allCardsView.DataContext = allCards; 
selectedCardsView.DataContext = selectedCards; 


public void ButtonClickHandler(object sender, EventArgs e) 
{ 
    if (allCardsView.SelectedItem != null && 
     !selectedCards.Contains(allCardsView.SelectedItem)) 
    { 
     selectedCards.Add(allCardsView.SelectedItem); 
    } 
} 
+0

क्षमा करें, मैं यह कहना भूल गया कि WinForms का उपयोग कर रहा हूँ। – hs2d

1

बेहतर उपयोग ObjectListView। यह सूची दृश्य के साथ वस्तुओं को जोड़ने और उपयोग करने का एक सही तरीका है। हॉट ट्रैकिंग जैसी सुविधाओं और ड्रैग और ड्रॉप करने में आसान सुविधाओं के साथ आपकी सूचीदृश्य में हेरफेर करने के लिए बहुत आसान हो जाता है।

संबंधित मुद्दे