2009-03-20 18 views

उत्तर

1

यदि आप ListView का उपयोग कर रहे हैं क्योंकि इसका इरादा है कि यह किसी प्रकार के ऑब्जेक्ट की अंतर्निहित सूची से बंधेगा, और उस वर्ग को INotifyChanged लागू करना चाहिए। डब्ल्यूपीएफ में आप सीधे सूची दृश्य से वस्तुओं को जोड़ नहीं/हटाते हैं, आप बाध्य सूची संरचना से निपटते हैं, और यह परिवर्तन के यूआई को सूचित करता है, जो तब चतुराई से नए आइटमों के साथ खुद को दोबारा हटा देता है। ,

myListView.Items.Add(new ListViewItem { Content = "This is an item added programmatically." }); 

हालांकि मैं MrTelly साथ सहमत हैं कि यह आवश्यक नहीं होना चाहिए, तो आप कुछ संग्रह के लिए ListView.ItemsSource की स्थापना की जानी चाहिए:

6

इस तरह आप अपने ListView करने के लिए एक ListViewItem कोड में बनाया जोड़ना होगा है सीधे ListView.Items में हेरफेर करने की बजाय।

यदि आप हमें पूरा करने के बारे में अधिक जानकारी देते हैं तो हम आपको WPF तरीका करने में मदद कर सकते हैं, जो हमेशा पहले आसान तरीका नहीं है, लेकिन यह बहुत लंबे समय तक आसान है।

0

आप संलग्न गुणों का उपयोग करके सूची दृश्य में कॉलम गतिशील रूप से जोड़ सकते हैं। CodeProject पर इस लेख को देखें यह बताते हैं कि वास्तव में कि ...

WPF DynamicListView - Binding to a DataMatrix

4

मैं ठीक उसी सवाल HERE पूछा (और अपने आप जवाब - मैं अपने कोड में एक समस्या थी)। उम्मीद है कि यह मदद करता है।

4

इसे सीधे अपने ऐप में ListView में जोड़ना आवश्यक नहीं है "WPF-way"। इस पर विचार करें:

public class BindableListViewModel 
{ 

    public IList<TypeOfObjectToDisplay> AllObjectsToDisplay; 
    public ICommand AddNewItemToList; 

    public BindableListViewModel() 
    { 
     AllObjectsToDisplay = new ObservableList<TypeOfObjectToDisplay>(); 
     AddNewItemToList = new RelayCommand(AddNewItem(), CanAddNewItem()); 
    } 

    public bool CanAddNewItem() 
    { 
     //logic that determines IF you are allowed to add 
     //For now, i'll just say that we can alway add. 
     return true; 
    } 

    public void AddNewItem() 
    { 
     AllObjectsToDisplay.Add(new TypeOfObjectToDisplay()); 
    } 

} 

फिर, XAML में जो कुछ हम क्या करने की जरूरत हमारे AllObjectsToDisplay सूची के लिए हमारी ListView की ItemsSource बाँध कर रहा है। यह हमें वस्तुओं को सीधे हमारे सूची दृश्य में जोड़ने की निर्भरता को अलग करने की अनुमति देता है; हम पर डेटा बाइंडिंग की डब्ल्यूपीएफ की ताकत को प्रत्यक्ष निर्भरता पर कैसे हटा सकते हैं हम अपने यूआई कंटेनर में व्यवसाय ऑब्जेक्ट्स जोड़ते हैं, हम उन्हें एक बहुत ही उपयोगी अभ्यास में प्रदर्शित करते हैं!

2

एक ObservableCollection

ObservableCollection<MyClassItem> lvList = new ObservableCollection<MyClassItem>(); 
myListview.ItemSource = lvList; 

// Add an item 
lvList.Add(new MyClassItem("firstname", "lastname")); 

इस तरह यह स्वचालित रूप से अपडेट हो जाएगा करने के लिए (क्षमा करें, टिप्पणी अभी तक नहीं कर सकते हैं)

MrTelly करने पर है के रूप में ...

बाइंड सूचीदृश्य UI जब संग्रह में परिवर्तन किए जाते हैं।

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