【发布时间】:2026-01-11 17:50:01
【问题描述】:
我有一个绑定了 ObservableCollection 的数据网格。 INotifyPropertyChanged 的实现可以正常工作。我将 DataGridView 与 collectionview 分组:
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”时,网格会刷新并且组分配正常工作。 如果我通过 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(); 一起使用,但这不是一个选项,因为网格非常复杂并且需要一段时间才能刷新。
有什么想法吗?
【问题讨论】:
-
if(datagrid.Items.NeedReferesh) datagrid.Items.Referesh() 试试这个
-
不起作用。但是谢谢
-
试试这个,这可能有用.... datagrid.ItemsSource = null; datagrid.ItemsSource = someData;
-
这样的代码可以工作,但我不能使用它,因为加载网格需要一段时间
标签: c# wpf datagridview datagrid grouping