2011-04-12 14 views
15

मेरे पास एक ऑब्जर्जेबल कोलेक्शन है, जहां माईडाटा 4 गुणों वाला एक वर्ग है i.e. int id, स्ट्रिंग नाम, बूल IsSelected, स्ट्रिंग IsVisible है।क्रमबद्ध करें अवलोकन करने योग्य चयन - सबसे अच्छा तरीका क्या है?

यह अवलोकन योग्य चयन चेकबॉक्स (उदाहरण के लिए शहर डेटा) के साथ एक combobox से जुड़ा हुआ है। अब, जब उपयोगकर्ता चेकबॉक्स चेक करता है तो अगली बार जब वह ड्रॉप डाउन खोलता है - सभी चयन शीर्ष पर आरोही क्रम में शीर्ष पर आते हैं।

जब उपयोगकर्ता कंबोबॉक्स में 3 वर्णों में टाइप करता है तो ऑटो ऑटो भी कार्यान्वित किया जाता है, ड्रॉप डाउन सभी चयनों को पहले दिखाएगा, फिर उपयोगकर्ता द्वारा 3 वर्णों से शुरू होने वाली सभी चीज़ें।

मैं शोध किया है और निम्नलिखित कोड लागू किया है और यह ठीक काम कर रहा है, लेकिन मुझे पता है यह सबसे अच्छा तरीका है कि क्या चाहते हैं या मैं एक बेहतर तरीके से इस लागू कर सकते हैं, कोड है:

 IEnumerable<MyData> sort; 
     ObservableCollection<MyData> tempSortedCities = new ObservableCollection<MyData>(); 
     sort = City.OrderByDescending(item => item.IsSelected).ThenBy(item => item.Name.ToUpper()) ; 
     // City is my observablecollection<MyData> property in my Model binded to combobox in UI 
     foreach (var item in sort) 
      tempSortedCities.Add(item); 


     City.Clear(); // City is my observablecollection<MyData> property in my Model 
     City = tempSortedCities; 
     tempSortedCities = null; 
     sort = null; 

धन्यवाद अपने समय के लिए अग्रिम में!

उत्तर

23

ICollectionView इसके लिए एकदम सही फिट लगता है। यह मूल संग्रह को संशोधित किए बिना संग्रह के क्रमबद्ध, फ़िल्टरिंग और समूहबद्ध करने के लिए विशेष रूप से डिज़ाइन किया गया था।

आप नीचे दिए गए कोड का उपयोग कर अपने संग्रह के लिए ICollectionView का एक उदाहरण हो सकता है: तो फिर

sortedCities.SortDescriptions.Add(new SortDescription("IsSelected", ListSortDirection.Descending)); 
sortedCities.SortDescriptions.Add(new SortDescription("Name", ListSortDirection.Ascending)); 

: ICollectionView.SortDescriptions संग्रह करने के लिए SortDescription प्रकार के उदाहरणों को जोड़कर

var sortedCities = CollectionViewSource.GetDefaultView(City); 

तो फिर तुम सेटअप छँटाई कर सकते हैं आप अपने ComboBox सीधे संग्रह दृश्य (City संग्रह के बजाय) पर बाध्य कर सकते हैं और यह पहले से क्रमबद्ध डेटा प्रदर्शित करेगा।

+1

यदि आप डिफ़ॉल्ट दृश्य को सॉर्ट कर रहे हैं तो शहर संग्रह में बाध्यकारी आपको परिणाम क्रमबद्ध करना चाहिए। संग्रह के लिए बाध्यकारी होने पर, डब्ल्यूपीएफ अपने डिफ़ॉल्ट दृश्य से जुड़ जाता है। – Goran

+2

@ गोरान - हाँ, मुझे यह पता है। लेकिन मुझे लगता है कि स्पष्ट होना बेहतर है। –

+0

धन्यवाद पावलो! –

संबंधित मुद्दे