मेरे पास wpf नियंत्रण TimeLineControl
कोड के साथ है:
.. & lt; आइटमोंकंट्रोल आइटम्स सोर्स = "{बाइनिंग टाइमलाइन इटम्स}" & gt; & LT; ItemsControl.ItemTemplate & gt; & LT; DataTemplate & gt; & Lt; रंग लाइइन: टाइमलाइन इटैम / & gt; & Lt; / DataTemplate & gt; & LT; /ItemsControl.ItemTemplate> & LT; ItemsControl.ItemsPanel & gt; & LT; ItemsPanelTemplate & gt; & Lt; स्टैकपैनेल ओरिएंटेशन = "क्षैतिज" / & gt; & Lt; / ItemsPanelTemplate & gt; & LT; /ItemsControl.ItemsPanel> & Lt; / ItemsControl & gt; ...
ColorLine
मेरा नेमस्पेस है, TimeLineItem
मेरा UserControl
है। वर्तमान में मैं ItemsSource
को मेरे TimeLineViewModel
( TimeLineControl
के लिए ViewModel) में बाध्य करें:
... निजी ऑब्ज़्वेशेबल कोलेक्शन & lt; TimeLineItemViewModel & gt; _timeLineItems; सार्वजनिक पर्यवेक्षण योग्यता & lt; टाइमलाइन इटैमव्यू मॉडल & gt; टाइमलाइनइटेम्स {प्राप्त करें {लौटें _timeLineItems; } निजी सेट {if (_timeLineItems == मान) वापसी; _timeLineItems = मूल्य; OnPropertyChanged (() = & gt; टाइमलाइनइटम); }} ...
मैं इसे टाइमलाइन आइटम
में ItemsControl
dynamicaly की संख्या बदलने के लिए उपयोग करता हूं।
लेकिन मैं इस 2 रिडुडांट व्यू मॉडेल्स ( TimeLineViewModel
और TimeLineItemViewModel
) से छुटकारा पाने के लिए चाहता हूं, जहां तक वास्तव में मैं इसका उपयोग केवल 1 मूल्य को नियंत्रित करने के लिए करता हूं: TimeLineItems - मुझे पता है कि यह तर्क भविष्य में जारी रहेगा और परिवर्तन नहीं करेगा।
इसलिए मुझे अपना
टाइमलाइन नियंत्रणाधिकार
बिना व्यू मॉडल के रखना चाहते हैं, लेकिन कस्टम निर्भरता प्रॉपर्टी (मुझे लगता है) कोड के पीछे, उस प्रकार का
int
होगा इसे कॉल AmountOfSectionsProperty
पर कॉल करें जब AmountOfSectionsProperty
बदल जाएगा, तो यह TimeLineItems
में ItemsControl
में इसके मान को बदलता है।
मैं इस संपत्ति को इस तरह लागू करता हूं :
सार्वजनिक रीडोनली स्टैटिक निर्भरता प्रॉपर्टी AmountOfSectionsProperty = DependencyProperty.Register ("AmountOfSections", typeof (int), टाइपफ (टाइमलाइन नियंत्रण), नया फ्रेमवर्कप्रापर्टीमैटेटाडेटा (1, फ़्रेमवर्कप्रॉपर्टीमैटडेटाओपेशंसएफ़िफर्सपेरेंट मेज़र, AmountOfSectionsChangedCallback, CoerceAmountOfSectionsCallback)); निजी स्टेटिक ऑब्जेक्ट कॉससएरमाउंटऑफ़सेक्शन कॉलबैक (निर्भरता ऑब्जेक्ट निर्भरता ऑब्जेक्ट, ऑब्जेक्ट बेस वैल्यू) {var चालू = (इंट) बेस वैल्यू; यदि (वर्तमान & lt; 1) चालू = 1; यदि (वर्तमान & gt; 24) वर्तमान = 24; वर्तमान वापसी; } निजी स्थिर शून्य AmountOfSectionsChangedCallback (निर्भरता ऑब्जेक्ट निर्भरता ऑब्जेक्ट, DependencyPropertyChangedEventArgs dependencyPropertyChangedEventArgs) {नए NotImplementedException फेंक); } सार्वजनिक प्रवीण राशि का विभाजन ({वापसी (पूर्णांक) प्राप्त करें (अमाउंटफ़ोक्शनप्रॉपर्टी); } सेट {सेट वैल्यू (AmountOfSectionsProperty, value); }}
यह 1..24 रेंज में होना चाहिए। लेकिन मैं थोड़े वास्तविक बाइंडिंग के साथ अटक गया - ItemsControl
आइटमों की संख्या बदलने के लिए, मेरी कॉलबैक विधि कैसे दिखनी चाहिए?
No comments:
Post a Comment