以编程方式更改Itemsource时,组不会更新 - WPF,C#

时间:2015-11-10 06:58:08

标签: c# wpf datagridview datagrid grouping

我有一个绑定了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();,但这不是一个选项,因为网格非常复杂,需要一段时间才能刷新。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您的ItemsSource应为

ItemsSource="{Binding VarConfigList,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"