मुझे आइटम्ससोर्स संपत्ति के साथ UserControl मिला है।कस्टम आइटम्ससोर्स निर्भरता संपत्ति के साथ उपयोगकर्ता नियंत्रण
:#region ItemsSource Dependency Property
public static readonly DependencyProperty ItemsSourceProperty =
DependencyProperty.Register("ItemsSource", typeof(IEnumerable), typeof(MonthViewControl),
new PropertyMetadata(OnItemsSourceChanged));
static void OnItemsSourceChanged(DependencyObject obj, DependencyPropertyChangedEventArgs e)
{
(obj as MonthViewControl).OnItemsSourceChanged(e);
}
private void OnItemsSourceChanged(DependencyPropertyChangedEventArgs e)
{
RefreshLayout();
}
public IEnumerable ItemsSource
{
get
{
return (base.GetValue(ItemsSourceProperty) as IEnumerable);
}
set
{
base.SetValue(ItemsSourceProperty, value);
}
}
#endregion
अब मेरी ViewModel में मैं एक घटनाक्रम संपत्ति जो इतनी तरह EventItem मदों की एक ICollectionView है: जैसा कि आधार UserControl वर्ग ItemsSource को लागू नहीं करता है, मैं इस तरह अपने ही निर्भरता संपत्ति बनाने के लिए किया था
private ObservableCollection<Controls.EventCalendar.EventItem> eventItems;
private CollectionViewSource events;
public System.ComponentModel.ICollectionView Events
{
get
{
if (events == null)
{
events = new CollectionViewSource();
events.Source = eventItems;
}
return events.View;
}
}
मुद्दा मैं का सामना करना पड़ रहा है कि मेरे विचार में, जब मैं घटनाक्रम संपत्ति के लिए बाध्य है, और मैं eventItems में कोई आइटम जोड़ने, UserControl ItemsSourceChanged घटना सक्रिय नहीं होगा और इसलिए यूआई अद्यतन नहीं है। परीक्षण के लिए मैंने दृश्य में एक साधारण सूची बॉक्स जोड़ा जो घटनाओं की संपत्ति से भी जुड़ा हुआ है। यह एक आकर्षण की तरह काम करता है। घटनाओं के लिए अद्यतन इटम्स देखने योग्य चयन सूची बॉक्स में दिखाई देता है।
मुझे लगता है कि यह मेरे आइटमसोर्स निर्भरता संपत्ति के साथ कुछ करने के लिए है। हो सकता है कि मुझे कस्टम कंट्रोल का उपयोग करने की आवश्यकता होगी जो UserControl के बजाय आइटम्स कंट्रोल बनाता है?
मेरी समस्या को समझने में आपकी सहायता के लिए: मैं कैलेंडर जैसे नियंत्रण बनाने की कोशिश कर रहा हूं जो ईवेंट/एजेंडा प्रविष्टियां दिखाता है (Google कैलेंडर के समान)। यह एक सम्मोहन की तरह काम करता है। जब नियंत्रण का आकार बदलता है तो यूआई अपडेट किया जाता है। आइटम्ससोर्स में बदलाव होने के बाद ही एकमात्र चीज ऑटोमैजिकल अपडेट है।
आशा किसी की मदद कर सकते हैं।
संपादित करें: जिस पल मैंने पोस्ट किया था, मुझे एहसास हुआ कि ईवेंट को निकाला नहीं जा सकता क्योंकि आइटमसोर्स प्रॉपर्टी नहीं बदली है। यह अंतर्निहित संग्रह है जो बदलता है। हालांकि, मैं इसे संभालने का तरीका नहीं हूं। इस काम को करने के लिए मुझे क्या करने की आवश्यकता है। बस एक संकेत पर्याप्त होगा। मुझे हर कार्यान्वयन के विवरण की आवश्यकता नहीं है।
देर से उत्तर के लिए खेद है। मैं आपके उत्तर को 'उत्तर' के रूप में चिह्नित करने जा रहा हूं क्योंकि यह जाने का तरीका दिखता है। हालांकि, मैं निश्चित रूप से यह नहीं बता सकता क्योंकि मैंने इसे आजमाया नहीं है। दरअसल, मैंने UserControl से नियंत्रण को एक कस्टम कंट्रोल पर रीडिज़ाइन करने का निर्णय लिया जो आइटम नियंत्रण से विरासत में आता है और यह समस्या को हल करने के लिए (अभी के लिए) लगता है। –