我已经实现了这样的INotifyPropertyChanged接口,
private int total;
public event PropertyChangedEventHandler PropertyChanged;
public void NotifyPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
public int Total {
get { return this.Total; }
set
{
if (this.total == value) return;
this.total = value;
this.NotifyPropertyChanged("TotalCost");
}
}
我必须将public int TotalCost
的值绑定到文本框。只要其他文本框中的值发生变化,TotalCost就会发生变化。我动态绑定了Binding
bind = new Binding();
bind.Source = this.DataContext; TotalText.SetBinding(TextBox.TextProperty, bind);
并将此类的DataContext设置为TotalCost。 我哪里错了? 感谢
答案 0 :(得分:4)
我认为NotifyPropertyChanged未被触发的原因是因为属性名称不匹配。公共属性的名称必须与传递给NotifyPropertyChanged方法的字符串相同。因此,而不是呼叫:
this.NotifyPropertyChanged("TotalCost");
你应该打电话来说:
this.NotifyPropertyChanged("Total");
这应该解决问题。
答案 1 :(得分:2)
你的吸气剂不应该是这样的吗?
得到{返回总数; }
也许它已经定了,但是getter没有返回它......
答案 2 :(得分:0)
private int _total=0;
public int Total
{
get
{
return this._total;
}
set {
if (this._total == value)
return;
this._total = value;
this.NotifyPropertyChanged("Total"); }
}
...
bind = new Binding("DataContext.Total");
bind.Source = this;
bind.Mode = BindingMode.TwoWay;
TotalText.SetBinding(TextBox.TextProperty, bind);
...
this.DataContext=this;