我的视图(V)绑定到ViewModel (VM)。在V中,我有一个显示在ListView中的对象列表。在ListView中,我使用一个ItemTemplate,每个项目都显示为一个标签,其中包含项目的名称,以及一个组合框,其中的SelectedItem设置为该项的另一个属性。Combobox绑定到一个列表,该列表也是主V的VM的一部分(我在绑定中使用ElementName=ListBox.DataContext绑定它.)
到目前为止,一切都很顺利。问题是Combobox可以包含很多条目,我想使用分组或过滤。我知道如何使用ListCollectionView进行过滤和分组。但是我不能简单地将我的列表更改为ListCollectionView,因为它被多次使用(对于ListView中的每一项)。一个ListCollectionView不能多次使用,但每次使用都有不同的SelectedItem。
现在,我正在寻找一种在ListView的组合框中使用分组的简单方法。是否有一种方法可以在ListCollectionView中直接定义ItemTemplate (DataTemplate)中的XAML?我还考虑在ItemsSource绑定中使用(非共享)转换器,该转换器将对象列表转换为ListCollectionView (如果使用OneTime绑定,转换器将只被调用一次,对吗?)我知道我也可以将每个对象放在VM列表中的自己的ViewModel中,并且每个对象都为Combobox提供自己的ListCollectionView,但这似乎是最复杂的解决方案(但可能是最干净的吗?)
还有其他建议或建议吗?
发布于 2017-11-08 10:00:20
如果要在多个组合框(或其他选择器)中使用相同的ICollectionView而不同步所选的项,则需要在每个组合框上明确设置IsSynchronizedWithCurrentItem="False"。
https://stackoverflow.com/questions/46970231
复制相似问题