如何获取CollectionViewSource的第一个元素?

我记得看过一些代码xaml,它可以从集合中获取第一个元素(如索引x [0])。

这是我的Resources的CollectionViewSource。

 

如果我在列表框中显示它,它加载它!

  

但是现在,我只想通过xaml获得第一个元素。 有可能做到这一点吗?

我遇到了类似的问题,我做的是调用MoveCurrentToFirst (在ViewModel中)

`SelectedIndex = 0(在XAML中的ListBox上),是另一种方式,但是当Collection视图源不保存任何数据时它失败了。

到目前为止我找到的最简单的方法是通过枚举器:

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

或者您可以使用扩展名执行相同操作并直接在可观察集合上调用它:

 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; } } 

然后从可观察集合中调用它:

 var firstItem = observable.First(); 

我知道有几种方法可以实现这一目标。 我可能会使用一个单独的属性来返回集合的第一个,或者创建一个Converter,它将返回它绑定到的任何集合或列表中的第一个元素。