我在具有各种过滤要求的对话框 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 CurrentItem,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2348545/

10-11 01:12