Comment obtenir le premier élément d’un CollectionViewSource?

Je me souviens avoir vu du code xaml où obtenir le premier élément (comme un index x [0]) d’une collection.

Ceci est mon CollectionViewSource de ressources.

 

Si je l’affiche dans une liste, il l’a chargé!

  

Mais pour le moment, je veux juste obtenir le premier élément via xaml. Est-ce possible de faire ça?

J’ai fait face à un problème similaire, et ce que j’ai fait était d’appeler MoveCurrentToFirst (dans ViewModel)

`SelectedIndex = 0 (sur ListBox dans XAML), était un autre moyen, mais échouait lorsque la source de la vue Collection ne contenait aucune donnée.

Le moyen le plus simple que j’ai trouvé jusqu’ici est de passer par un énumérateur:

 ICollectionView view = CollectionViewSource.GetDefaultView(observable); var enumerator = view.GetEnumerator(); enumerator.MoveNext(); // sets it to the first element var firstElement = enumerator.Current; 

ou vous pouvez faire la même chose avec une extension et l’appeler directement sur la collection observable:

 public static class Extensions { public static T First(this ObservableCollection observableCollection) { ICollectionView view = CollectionViewSource.GetDefaultView(observableCollection); var enumerator = view.GetEnumerator(); enumerator.MoveNext(); T firstElement = (T)enumerator.Current; return firstElement; } } 

puis appelez-le de la collection observable:

 var firstItem = observable.First(); 

À ma connaissance, il y a deux façons d’accomplir cela. Je choisirais probablement soit une propriété distincte qui renvoie le premier élément de la collection, soit un convertisseur qui renverrait le premier élément de la collection ou de la liste à laquelle il est lié.