WPF 数据网格 在单元级别发生更改时刷新

本文关键字:刷新 数据网 数据 网格 单元 WPF | 更新日期: 2023-09-27 18:33:54

我有一个绑定到 ObservabelCollection 的数据网格。当更改为 Add 时,数据网格刷新得很好,删除集合上的 ítems,但是如果我更改该集合上一个 Ítem 的属性,网格不会刷新。

网格定义:

        <DataGrid x:Name="DatGridPlanillas" ItemsSource="{Binding ListaPlanillas,Mode=TwoWay}">
            <DataGrid.Columns>
                <DataGridTextColumn Header="{x:Static resources:Labels.GENERAL_IdDocumeto}" Binding="{Binding StrIdDocumento,Mode=TwoWay}" ClipboardContentBinding="{x:Null}"/>
                <DataGridTextColumn Header="{x:Static resources:Labels.GENERAL_FechaCreacion}" Binding="{Binding DatFechaDocumento}" ClipboardContentBinding="{x:Null}"/>
            </DataGrid.Columns>
        </DataGrid>

变化

DocumentsBO MiGestorDeDocumentos = new DocumentsBO(db);
foreach (MyEntity Doc in ListaPlanillas)
{
    Documento DocumentoFinal = MiGestorDeDocumentos.NewDocIdByModule(_IntIdModulo);
    Doc.StrIdDocumento = DocumentoFinal.StrIdDocumento;
    Doc.IntIdDocumento = DocumentoFinal.IntIdDocumento;
    Doc.PlanillaAcopioGenerada = true;
    Doc.NumDocumentonumero = DocumentoFinal.NumDocumento;
    db.entry(Doc).State = EntityState.Modified;
}

我发现的唯一方法是清空原始收藏,然后恢复它

db.SaveChanges();
ObservableCollection<MyEntity> _tmp = _ListaPlanillas;
ListaPlanillas = new ObservableCollection<MyEntity>();
ListaPlanillas = _tmp; 

但在我看来,这听起来非常丑陋的方式来执行如此简单的事情。当仅更改集合的属性时,如何强制网格更新?

WPF 数据网格 在单元级别发生更改时刷新

您需要

在要放入集合的对象上实现 INotifyPropertyChanged 接口。 然后在更新对象属性时触发PropertyChanged事件。 有关示例,请参阅 http://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged.aspx。