CollectionViewSource CurrentItem

Ber*_*ryl 10 .net data-binding wpf collectionviewsource

我在对话框视图模型中使用CollectionViewSource,它具有各种过滤要求,工作正常.我还维护了属性(SelectedProject)中所选项目的等价物,我想知道是否可以/应该取消它,因为View将知道当前项目.我的数据绑定看起来像:

<ListView  
      ItemsSource="{Binding Projects.View}" 
      IsSynchronizedWithCurrentItem="True"
      SelectedItem="{Binding SelectedProject, Mode=TwoWay}">
Run Code Online (Sandbox Code Playgroud)

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

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

Abe*_*cht 7

可以取消选定项目,但我会反对它.如果您的代码中包含该属性,则表明您正在执行的操作.如果你没有它,你需要做类似的事情

CollectionViewSource.GetDefaultView(Projects.View).CurrentItem as Project
Run Code Online (Sandbox Code Playgroud)

只是为了与当前项目进行交互.我重视"内置"的清晰度.最重要的是,CurrentItem是只读的,所以如果你想在ViewModel中选择一个项目,那就不可能了.

  • 最后一点是不正确的.CollectionView.MoveCurrentTo(对象项)将允许您更新视图模型中的选择. (3认同)