मैं एक ऐप बना रहा हूं जिसमें वस्तुओं की एक सूची को नियंत्रण के समूह पर प्रदर्शित होने से पहले अवरुद्ध और अनुवाद किया जाना चाहिए। इस अंत में, मैंने ऑब्जेर्जेबल कोलेक्शन (बैकअपअप एक डेटाबेस के बारे में एक कस्टम क्लास परिभाषित जानकारी होने के नाते) की निर्भरता प्रॉपर्टी बनाई है। मैं जो करना चाहता हूं वह यह है कि नियंत्रण एक एमवीवीएम में एक अवलोकन करने योग्य चयन के लिए बाध्य होगा। इस संग्रह का उपयोग शुरू में नियंत्रण को लोड करने के लिए किया जा सकता था। फिर, जब नियंत्रण इंटरफ़ेस के माध्यम से एक प्रविष्टि जोड़ा जाता है, तो उसे आंतरिक पर्यवेक्षण चयन में जोड़ा जाना चाहिए जिसे निर्भरता प्रॉपर्टी के रूप में परिभाषित किया गया है और एमवीवीएम में संग्रह में दिखाए जाने के बाद से वे बाध्य हैं।निर्भरता के रूप में अवलोकन करने योग्य चयन
protected ObservableCollection<BackupEntry> _BackupItems = new ObservableCollection<BackupEntry>();
public static readonly DependencyProperty BackupItemsProperty = DependencyProperty.Register("BackupItems", typeof(ObservableCollection<BackupEntry>), typeof(ExplorerWindow));
public ObservableCollection<BackupEntry> BackupItems
{
get { return (ObservableCollection<BackupEntry>)GetValue(BackupItemsProperty); }
set { SetValue(BackupItemsProperty, value); }
}
public ExplorerWindow()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(ExplorerWindow), new FrameworkPropertyMetadata(typeof(ExplorerWindow)));
SetValue(BackupItemsProperty, _BackupItems);
_BackupItems.CollectionChanged += new NotifyCollectionChangedEventHandler(BackupItems_CollectionChanged);
}
void BackupItems_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
throw new NotImplementedException();
}
और परीक्षण अनुप्रयोग में:: यहाँ कोड है कि मैं का उपयोग कर रहा है
<my:ExplorerWindow Name="ew" HorizontalAlignment="Left" VerticalAlignment="Top" Width="503" Height="223" BackupItems="{Binding BackupListItems}" />
मैं अपने परीक्षण अनुप्रयोग में स्क्रीन पर एक बटन बनाया। जब इसे क्लिक किया जाता है, तो बैकअप लिस्ट इटम्स में एक आइटम जोड़ा जाता है। बैकअप Items_CollectionChanged कभी नहीं कहा जाता है और मेरे संग्रह में मेरे संग्रह में नया आइटम नहीं दिखाया जाता है। क्या मैं यहां पूरी तरह से ट्रैक कर रहा हूँ? यह काम करने के लिए मुझे क्या करने की ज़रूरत है?
क्या उपरोक्त कोड आपका व्यूमोडेल है? यदि हां, तो आप गुण –
संख्या के बजाय निर्भरता ऑब्जेक्ट्स का उपयोग क्यों कर रहे हैं, उपर्युक्त कोड मेरे नियंत्रण के लिए कोडबेंड है। सूची में दर्ज किए जा रहे डेटा और इसे प्रदर्शित करने के लिए उपयोग किए जा रहे नियंत्रणों के बीच कोई प्रत्यक्ष सहसंबंध नहीं है। निर्भरता ऑब्जेक्ट सूची का पर्दाफाश करने के लिए है ताकि इसे बाध्य किया जा सके और डेटा को नियंत्रण से और पास किया जा सके। –