C# 如何将IsSelected for MVVM移出业务对象?

C# 如何将IsSelected for MVVM移出业务对象?,c#,wpf,listview,mvvm,viewmodel,C#,Wpf,Listview,Mvvm,Viewmodel,我在C#/WPF中有一个相当大的应用程序,它是用MVVM(某种程度上)开发的。 在ListView中,我使用IsSelected bindinded对所选项目进行索引。这些IsSelected属性位于我的应用程序的模型中,而不是ViewModel中 目前,我只有一个viewmodel指向业务对象(模型,而不是视图模型)中的一个列表,但将来我可能希望更改此项,并且模型中的IsSelected属性不再可能(否则两个viewmodel将具有相同的选定项) 选择模式为多个,范围为1到128(列表的最大长

我在C#/WPF中有一个相当大的应用程序,它是用MVVM(某种程度上)开发的。 在ListView中,我使用IsSelected bindinded对所选项目进行索引。这些IsSelected属性位于我的应用程序的模型中,而不是ViewModel中

目前,我只有一个viewmodel指向业务对象(模型,而不是视图模型)中的一个列表,但将来我可能希望更改此项,并且模型中的IsSelected属性不再可能(否则两个viewmodel将具有相同的选定项)

选择模式为多个,范围为1到128(列表的最大长度)项


我认为它应该在viewmodel中,但是我应该如何实现呢

使用MVVM时,您不局限于单一视图模型。是的,您可以从视图模型中显示部分模型,但也可以显示其他视图模型

在这种情况下,我建议将集合的实例包装在它们自己的视图模型中,并将项目模板的绑定根设置为该值


例如,如果要将数据绑定到模型集合,则可以将每个模型的实例传递给一个视图模型,该视图模型包装该模型,然后公开所选的
IsSelected
,以便在视图模型上进行绑定。

使用MVVM时,您不受单个视图模型的限制。是的,您可以从视图模型中显示部分模型,但也可以显示其他视图模型

在这种情况下,我建议将集合的实例包装在它们自己的视图模型中,并将项目模板的绑定根设置为该值


例如,如果要将数据绑定到一组模型,则可以将每个模型的实例传递给一个视图模型,该视图模型将封装该模型,然后公开所选的
IsSelected
,以便在视图模型上进行绑定。

是的,它应该在VM中。张贴(部分)代码以便我们了解。什么是
SelectionMode
?如果您有一个单一的选择模式,即每次只能选择一个项目,我经常使用
SelectedItem
(项目是集合中的内容)作为与集合位于同一
ViewModel
中的属性。取决于您对所选项目所做的操作。是的,它应该在VM中。张贴(部分)代码以便我们了解。什么是
SelectionMode
?如果您有一个单一的选择模式,即每次只能选择一个项目,我经常使用
SelectedItem
(项目是集合中的内容)作为与集合位于同一
ViewModel
中的属性。具体取决于您对所选项目所做的操作。+1在此之前几天,我问了一个类似的问题,建议将IsSelected添加到我的模型中。但愿我早点看到这篇文章+1在这之前的几天,我问了一个类似的问题,有人建议我将ISSELECT添加到我的模型中。但愿我早点看到这篇文章!