wpf - how to sort ObservableCollection -
मेरे पास एक अवलोकन संकलन है और एक WPF UserControl इसके लिए डाटाबाउंड है। नियंत्रण एक ग्राफ है जो ऑब्ज़्ववेबलक्लुशन में हर प्रकार की बारडेटा के लिए एक ऊर्ध्वाधर बार दिखाता है।
ObservableCollection & lt; BarData & gt; क्लास बारडेटा {सार्वजनिक डेटटाइम स्टार्टडेट {प्राप्त; सेट;} सार्वजनिक डबल MoneySpent {get; सेट;} सार्वजनिक डबल कुलमनीसेंप टिल यहबार {प्राप्त करें; सेट;}} अब मैं स्टार्टडेट पर आधारित ऑब्ज़र्वबल कलेक्शन को हल करना चाहता हूं ताकि बारडेटा संग्रह में स्टार्टडेट के क्रम में हो जाएगा। फिर मैं हर बारडेटा में TotalMoneySpentTillThisBar के मूल्यों की गणना कर सकता हूँ -
var संग्रह = नया ऑब्ज़र्वबल कलेक्शन & lt; बारडेटा & gt; (); // संग्रह संग्रह के लिए कुछ बारडेटा ऑब्जेक्ट जोड़ें। सर (बार = & gt; बार। स्टार्टडेटा); // यह आदर्श प्रकार का कार्य है जो मैं देख रहा था जिसके लिए डबल कुल = 0.0 मौजूद नहीं है; संग्रह। के लिए सूची ()। पूर्व (बार = & gt; {बार कुल मुबारकदार टिल यह बाड़ = कुल + बार.मॉनीसेंप; कुल = बार कुल मुनीस्पेन तक यह बड़;}); मुझे पता है कि मैं सॉर्ट करने के लिए ICollectionView का उपयोग कर सकता हूँ, veiwing के लिए डेटा फ़िल्टर कर सकता हूं लेकिन वह वास्तविक संग्रह बदल नहीं सकता है। मुझे वास्तविक संग्रह को सॉर्ट करने की आवश्यकता है ताकि मैं प्रत्येक आइटम के लिए TotalMoneySpentTillThisBar की गणना कर सकूं। इसका मूल्य चयन में आइटम के क्रम पर निर्भर करता है।
धन्यवाद।
hummm पहले मेरे लिए आपके पास प्रश्न है: क्या यह वाकई महत्वपूर्ण है कि आपका अवलोकनकॉल्क्शन सॉर्ट किया गया है, या जो वास्तव में आप चाहते हैं वह जीयूआई में प्रदर्शित किया गया है? मुझे लगता है कि उद्देश्य को एक सॉर्ट किए गए डिस्प्ले होना चाहिए, जिसे "वास्तविक समय" अपडेट किया जाएगा। फिर मैं 2 समाधान देखता हूं
-
आइसीलिप्यूप दृश्य अपने अवलोकनकॉल्क्शन प्राप्त करें और इसे सॉर्ट करें, जैसा कि यहां समझाया गया है < / -
-
अपने अवलोकनकॉल्क्शन से एक संग्रह व्यूसोर्स को बाइंड करें, उस पर एक तरह से जोड़ें, फिर उस CollectionViewSource को < Code> ItemSource एक ListView का। यानी:
इस नामस्थान को जोड़ें
xmlns: scm = "clr-namespace: System.ComponentModel; विधानसभा = WindowsBase " तब
& lt; संग्रह विवर सोर्स x: कुंजी = 'src' स्रोत =" {माइक्रोसस्वबल कॉलिंग बाध्यकारी, एलिमेंटनाम = मेन वान्डोनाम} "& gt; & LT; CollectionViewSource.SortDescriptions & gt; & Lt; scm: सॉर्ट डेशिकल प्रॉपर्टी नाम = "माइफ़िल्ड" / & gt; & LT; /CollectionViewSource.SortDescriptions> & Lt; / CollectionViewSource & gt; और इस तरह बाइंड करें
& lt; ListView ItemsSource = "{बाध्यकारी स्रोत = {StaticResource src}}" & gt;
Comments
Post a Comment