我有一个网格:
<Grid Name="MyGrid" DataContext="{Binding MyGridBinded}" >
<TextBox Text="{Binding Path=Total, Mode=OneWay}" />
</Grid>
MyGridBinded是一个对象:
public class GridPOCO
{
public IList myList { get ; set; }
public Total { get { Return myList.Count; }}
}
因此,当我更新myList时,在My ViewModel中,我致电:
Base.OnpropertyChanged("MyGridBinded");
但是总计未更新。
我该如何更新我的只读字段?
@ H.B和@Daniel Rose。
如果我在GridPOCO中实现INotifyPropertyChanged。我可以打电话后
Base.OnpropertyChanged("Total");
但是GridPOCO是POCO对象,我不想在其中实现INotifyPropertyChanged。
如果有时间,我将尝试Ben的答案。
最佳答案
您需要命名属性,而不是对象:
Base.OnpropertyChanged("Total");
(包含
Total
属性或其基类之一的对象需要实现INotifyPropertyChanged,并且该方法需要在属性更改的实例上调用)或者,只需使用
null
调用它即可更新所有属性绑定(bind)(通常避免这种情况):Base.OnpropertyChanged(null);
关于c# - MVVM刷新System.Windows.Controls.Grid中的只读文本框,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6250940/