我有一个绑定到ObservabelCollection的Datagrid。当更改为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;
}
我找到的唯一方法是清空原始Collection然后将其恢复
db.SaveChanges();
ObservableCollection<MyEntity> _tmp = _ListaPlanillas;
ListaPlanillas = new ObservableCollection<MyEntity>();
ListaPlanillas = _tmp;
但这对我来说听起来非常丑陋。当只是更改集合的属性时,如何强制网格更新?
答案 0 :(得分:1)
您需要在放置到集合中的对象上实现INotifyPropertyChanged
接口。然后在更新对象属性时触发PropertyChanged
个事件。有关示例,请参阅http://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged.aspx。