.net - CollectionViewSource 当前项

标签 .net wpf data-binding collectionviewsource

我在具有各种过滤要求的对话框 View 模型中使用 CollectionViewSource,效果很好。我还在属性(SelectedProject)中维护了选定项的等效项,我想知道我是否可以/应该取消它,因为 View 会知道当前项。我的数据绑定(bind)看起来像:

<ListView  
      ItemsSource="{Binding Projects.View}" 
      IsSynchronizedWithCurrentItem="True"
      SelectedItem="{Binding SelectedProject, Mode=TwoWay}">

我使用 SelectedProject 的 setter 来促进单元测试,据我所知, CurrentItem 似乎不可设置。当我想使用它时,我还需要将它转换为正确的对象。 OTOH,如果 SelectedProject 是多余的,那么我会向它展示与任何其他冗余相同的尊重并将其删除。

那么,当您使用 CollectionViewSource 时,您通常如何处理当前项目?

最佳答案

您可以取消 SelectedProject,但我会反对它。如果您的代码中有该属性,那么您在做什么就很清楚了。如果你没有它,你将需要做类似的事情

CollectionViewSource.GetDefaultView(Projects.View).CurrentItem as Project

只是为了与当前项目进行交互。我重视“内置”的清晰度。最重要的是,CurrentItem 是只读的,因此如果您想在 ViewModel 中选择一个项目,这是不可能的。

关于.net - CollectionViewSource 当前项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2348545/

相关文章:

c# - 如何通过 Binding 在 Canvas 中显示项目

.net - ASP.NET MVC 和测试驱动开发

c# - 在 C# 中使用数字设置颜色

c# - 序列化异常 : Could not find type 'System.Collections.Generic.List` 1 in c# unity3d

c# - ListView C内的按钮

WPF触发器不为空

.NET SDK 项目类型引用问题

c# - 如何在 WPF 中使用窗口作为初始屏幕?

data-binding - 具有单向数据绑定(bind)的 polymer

c# - 使用绑定(bind)到 List<UserControl> 我该怎么做才能不显示控件