wpf - Sorting an ObservableCollection -


मेरे पास एक UserVM (बहुवचन) और एक UserVM है (एकवचन )। मैं एक अवलोकनिक संकलन & lt; UserVM & gt; में UserVM बनाएँ। मेरे पास अवलोकनकणीय चयन & lt; UserVM & gt; एक सूचीदृश्य से जुड़ा है। जब मैं सूची दृश्य में एक उपयोगकर्ता को संपादित करता हूं, तो मुझे उपयोगकर्ता कोड के आधार पर पुन: ऑर्डर करने के लिए ObservableCollection चाहता हूं। यहां कुछ कोड दिया गया है:

UsersVM:

  सार्वजनिक पर्यवेक्षणसंपादित करें & lt; UserVM & gt; UserList {get; सेट; } सार्वजनिक यूज़र्सएमएम (IUserService userService) {this._userService = userService; Var उपयोगकर्ता = userService.GetUsers (); Var उपयोगकर्ताव्यूमोल्ड = उपयोगकर्ता। चयन (x = & gt; नया यूजरजीम (यूजरआईडी = एक्स। यूएसआईडी, स्टेटसआईडी = एक्स। स्टेटसआईडी, स्टेटस = एक्स.स्टैटस,}); यह। यूज़र लिस्ट = न्यू ऑब्झर्वबल कलेक्शन & lt; यूजरवाईम & gt; (यूजरव्यूमोडेल); This.UpdateUserStatus = new RelayCommand & lt; ऑब्जेक्ट [] & gt; ((एस) = & gt; अपडेटस्टैटस (एस)); }  

यूज़रम:

  सार्वजनिक वर्ग UserVM: व्यूमोडेलबेस {सार्वजनिक यूजरजीएम () {} सार्वजनिक एट यूजरआईडी {प्राप्त; सेट; }}   

इसलिए यदि मैं एक व्यक्तिगत उपयोगकर्ता की स्थिति बदलता हूं तो मुझे उपयोगकर्ता की स्थिति के आधार पर सहारा लेने के लिए UserList चाहिए। मैंने पढ़ा है कि एक ही तरीका ObsavableCollection कुछ क्रमबद्ध एल्गोरिदम को लागू कर सकता है, लेकिन फिर भी आपको इसे बदलने के लिए कुछ जोड़, निकालें, या कुछ स्थानांतरित करने की आवश्यकता है? मैंने इसे पढ़ा है: अगर मुझे अपना पुनः निर्देशित अवलोकनकल्पनहीं देखना चाहते हैं तो मुझे जोड़ने, निकालें, या स्थानांतरित करने की आवश्यकता है I मैंने कोशिश की UserList.Move (1,2); और वह काम नहीं कर रहा था मैंने कोशिश की UserList.Add (TestUserObject); और वह काम नहीं करता।

< P> यह मैं जिस पद्धति का उपयोग करता हूं, जब मैं सॉर्ट करना, समूह बनाना चाहता हूं, एक ऑब्ज़र्वबल कॉलेक्शन फ़िल्टर करता हूं। इस मामले में आप ऑब्ज़र्वबल कलेक्शन का डिफ़ॉल्ट दृश्य प्राप्त करना चाहते हैं और इसके लिए एक सॉर्ट विवरण जोड़ना चाहते हैं।
  संरक्षित पर्यवेक्षणकॉल्चेशन & lt; UserVM & gt; _users = नया निरीक्षणीय संकलन & lt; यूज़्यूआइवीएम & gt; (); सुरक्षित ICollectionView _bindToMe; सार्वजनिक यूज़र्सएमएम () {_users.Add (नया यूज़रम ()} {status = "1"}); _users.Add (नया UserVM () {status = "3"}); _users.Add (नया UserVM () {status = "2"}); } सार्वजनिक ICollectionView BindToMe {get {if (_bindToMe == रिक्त) {_bindToMe = संग्रहदृश्यदर्शिका.गेट डीफॉल्ट दृश्य (_यूज़र); _बिंदटोम.सर्टेंडिशन। जोड़ें (नया क्रमवार वर्णन ("स्टेटस", लिस्टस्र्टडायरेक्शन। अतिक्रमण)); } वापसी _बिंडतोम; }}   

फिर आप अपने ListView ItemsSource को बाध्य कर सकते हैं

  & lt; ListView ItemsSource = "{Binding BindToMe}" / & gt;   

वैकल्पिक रूप से आप अपने ऑब्ज़र्वबल कोलेक्शन को अपने व्यू मॉोडल पर उजागर कर सकते हैं, इसके साथ बाध्य करें और बस अपने व्यू मॉोडल के कन्स्ट्रक्टर में सॉर्ट विवरण को अपने ऑब्ज़र्वबल कलेक्शन में जोड़ें।

  संरक्षित पर्यवेक्षणीय कलेक्शन & lt; यूजरजीएम & gt; _users; सार्वजनिक यूज़र्सएमएम () {Users.Add (नया यूज़रम ()} {status = "1"}); उपयोगकर्ता। जोड़ें (नया यूजरजीएम () {status = "3"}); उपयोगकर्ता। जोड़ें (नया यूजरजीएम () {status = "2"}); Var दृश्य = संग्रह ViewSource.GetDefaultView (_users); देखें। सेटल डिस्क्रिप्शन। जोड़ें (नया क्रमवार वर्णन ("स्टेटस", लिस्टस्र्टडायरेक्शन। अतिक्रमण)); } सार्वजनिक पर्यवेक्षणसंपादित करें & lt; यूजवीएमजी & gt; उपयोगकर्ता {वापसी _उसेर्स प्राप्त करते हैं ?? (_users = नया निरीक्षणीय कलेक्शन & lt; यूजरजीएम & gt; ()); }}    

Comments

Popular posts from this blog

ios - Adding an SKSpriteNode to SKScene from a child SKSpriteNode -

Matlab transpose a table vector -

c# - Textbox not clickable but editable -