我有一个网格:

 <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/

10-11 13:57