要点:
在我窗口的ViewModel中,我有一个CollectionViewSource
位于ObservableCollection
个数据条目之上。在我的界面上,我在GridView
内有一个ListView
,该CollectionViewSource.View
绑定了GridView
。我有按钮(带有绑定命令),用户可以通过多种方式单击以过滤CollectionViewSource.View
。这运作良好。但我还想实现一个按钮/命令,它将向用户显示现在过滤的MoveCurrentToPosition()
中的一个随机条目。
我现在花了三个多小时(没有意识到已经过了这么多时间),试图寻找答案。在我发现CollectionViewSource.View
属性的int count = EntriesCVS.View.Cast<Entry>().Count();
EntriesCVS.View.MoveCurrentToPosition(random.Next(0, count));
Entry randomEntry = EntriesCVS.View.CurrentItem as Entry;
方法后,我觉得我已经接近了,但它仍然不太正确。
以下是我的相关代码:
{{1}}
请注意,我完全添加了第三行,以便我可以通过调试器验证是否正确地抓取了一个随机条目(并且它是)。但是我的问题是GridView并不只显示一个条目。它显示了整个过滤结果集合,而不仅仅是其中的一个随机选择。
我仍然认为自己处于WPF的初级中级水平,并且最重要的是,我最近学习如何将我所知道的内容融入MVVM。
如何告诉CVS仅显示其当前项目?