J'ai une ObservableCollection, où MyData est une classe avec 4 propriétés, c'est-à-dire int id, string name, bool IsSelected, chaîne IsVisible.Trier ObservableCollection - Quelle est la meilleure approche?
Cette ObservableCollection est liée à une zone de liste déroulante avec des cases à cocher (données Cities par exemple). Maintenant, lorsque l'utilisateur coche les cases à cocher, la prochaine fois qu'il ouvrira la liste déroulante, toutes les sélections devraient apparaître en ordre croissant par nom.
J'ai également mis en œuvre l'auto-complétion lorsque l'utilisateur tape 3 caractères dans la liste déroulante, le menu déroulant s'ouvrira en affichant toutes les sélections en premier, puis tous les éléments en commençant par les 3 caractères.
J'ai fait des recherches et mis en œuvre le code suivant et il fonctionne très bien, mais je veux savoir si c'est la meilleure approche ou puis-je mettre en œuvre ce une meilleure façon, le code est:
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;
Merci à l'avance pour votre temps!
Si vous triez la vue par défaut, la liaison à la collection City devrait vous donner des résultats triés. Lors de la liaison à une collection, WPF se lie à sa vue par défaut. – Goran
@Goran - Oui, je le sais. Mais je pense qu'il vaut mieux être explicite. –
Merci Pavlo! –