如何获取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,它将返回它绑定到的任何集合或列表中的第一个元素。