ObservableCollection
我的视图模型中有一个,我的视图中有一个CollectionViewSource
和ListBox
。
绑定ListBox
到. 绑定到CollectionViewSource
,对项目进行排序并将它们分组。我通过. _ _ 这一切都很好。CollectionViewSource
ObservableCollection
IsLiveGroupingRequested
IsLiveSortingRequested
CollectionViewSource
ListBox
问题与选择有关。如果我在 中选择一个项目,ListBox
然后由于视图模型对象以某种方式更改而重新分组,则该项目在移动到新组时将被取消选择。
重新分组所选项目时如何保留选择?
这是一个显示问题的简单精简 XAML 示例。如果 AllItems 中某个对象的 Category 属性发生更改,则该项目将通过实时整形正确重新分组。但是,如果该项目被选中,它将变为未选中状态。
<Grid>
<Grid.Resources>
<CollectionViewSource x:Key="MyItems" Source="{Binding AllItems}" IsLiveGroupingRequested="True" IsLiveSortingRequested="True">
<CollectionViewSource.SortDescriptions>
<componentModel:SortDescription PropertyName="Category" />
<componentModel:SortDescription PropertyName="Name" />
</CollectionViewSource.SortDescriptions>
<CollectionViewSource.GroupDescriptions>
<PropertyGroupDescription PropertyName="Category" />
</CollectionViewSource.GroupDescriptions>
</CollectionViewSource>
</Grid.Resources>
<ListBox ItemsSource="{Binding Source={StaticResource MyItems}}">
<ListBox.GroupStyle>
<GroupStyle>
<GroupStyle.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}" />
</DataTemplate>
</GroupStyle.HeaderTemplate>
</GroupStyle>
</ListBox.GroupStyle>
</ListBox>
</Grid>