我有一个绑定了ObservableCollection的数据网格。 INotifyPropertyChanged的实现可以正常工作。我将DataGridView与集合视图分组:
CollectionViewSource.GetDefaultView(dgVarConfig.ItemsSource).GroupDescriptions.Clear();
CollectionViewSource.GetDefaultView(dgVarConfig.ItemsSource).GroupDescriptions.Add(new PropertyGroupDescription("TopLevelGroup"));
CollectionViewSource.GetDefaultView(dgVarConfig.ItemsSource).GroupDescriptions.Add(new PropertyGroupDescription("Group"));
CollectionViewSource.GetDefaultView(dgVarConfig.ItemsSource).Refresh();
这可以按预期工作,但有一个问题。 当我更改数据网格中的“TopLevelGroup”时,网格刷新并且groupassignment正常工作。 如果我通过WPF窗口更改它,它不会刷新网格。
代码:
public void changeGroup(String group, VarConfig selectedVarConfig)
{
selectedVarConfig.TopLevelGroup = group;
}
要明确:网格中的groupcell更改,但分配不会自动运行。如果我双击单元格并退出编辑模式,它会跳转到正确的组。
<DataGrid x:Name="dgVarConfig" ItemsSource="{Binding VarConfigList}" SelectedItem="{Binding Path=SelectedVarConfig, Mode=TwoWay}" Margin="8,56,557,80" AutoGenerateColumns="False" CanUserDeleteRows="False" CanUserResizeRows="False" HeadersVisibility="Column" CanUserAddRows="False" LayoutUpdated="dgVarConfig_LayoutUpdated" HorizontalScrollBarVisibility="Auto" PreviewKeyDown="dgVarConfig_PreviewKeyDown" BeginningEdit="dgVarConfig_BeginningEdit" CellEditEnding="dgVarConfig_CellEditEnding" SelectionChanged="dgVarConfig_SelectionChanged" LoadingRow="dgVarConfig_LoadingRow">
它适用于CollectionViewSource.GetDefaultView(dgVarConfig.ItemsSource).Refresh();
,但这不是一个选项,因为网格非常复杂,需要一段时间才能刷新。
有什么想法吗?
答案 0 :(得分:0)
您的ItemsSource应为
ItemsSource="{Binding VarConfigList,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"