मैं CollectionViewSource पर आइटम्स नियंत्रण को बाध्य कर रहा हूं। यहां कोड है:संग्रह दृश्य दृश्य संसाधन परिवर्तन पर पुन: क्रमबद्ध नहीं है
this.Trucks = new ObservableCollection<Truck>();
foreach (var truck in DataRepository.Trucks.Where(t => t.ReadyDate.Date.Equals(this.Date)))
{
this.Trucks.Add(truck);
}
this.TrucksSource = new CollectionViewSource { Source = this.Trucks };
this.TrucksSource.SortDescriptions.Add(new SortDescription("ReadyAddress.Region.RegionNumber", ListSortDirection.Ascending));
this.TrucksSource.SortDescriptions.Add(new SortDescription("TruckId", ListSortDirection.Ascending));
जब मैं शुरुआत में बाध्य करता हूं - सॉर्टिंग काम करता है। जब मैं ऑब्जर्जेबल कोलेक्शन में आइटम जोड़ता हूं - यह उचित स्थान पर डाला जाता है, यह अच्छा है। लेकिन जब मैं उस संपत्ति को बदलता हूं जिसे मैं क्रमबद्ध करता हूं - इस आइटम को सूची में "स्थानांतरित नहीं किया जा रहा" है।
ReadyAddress.Region.RegionNumber
ठीक से INotifyProperty बढ़ाता है और मैं इसे बाध्य क्षेत्रों में देखता हूं, लेकिन ऑर्डर नहीं बदलता है। क्या मुझे ऐसा कुछ उम्मीद है जो ऐसा नहीं होना चाहिए या इसे संभालने का बेहतर तरीका है?
कृपया [सॉर्ट डिस्क्रिप्शन और स्वचालित सॉर्ट किए गए ऑर्डर रीफ्रेश] के लिए मेरा उत्तर देखें (http://stackoverflow.com/a/7372522/620360)। – LPL
डब्ल्यूपीएफ 4.5 में नई सुविधा है जिसे लाइव आकार कहा जाता है जो इस समस्या को हल करता है लेकिन अगर आप रीफ्रेश को कॉल नहीं करना चाहते हैं तो आपको एलपीएल द्वारा लिंक की गई विधि का उपयोग करना पड़ सकता है। – Kris
मैं उस संपत्ति पर PropertyChanged को कॉल करके इसे ठीक करने में सक्षम था जो दृश्य को उजागर करता है, दृश्य को रीफ्रेश करने (और सॉर्ट को साफ़ करने) और फिर सॉर्ट विवरण जोड़ना। – PatFromCanada