我怎样才能对房产变更进行RaisePropertyChanged?

A.T*_*.T. 4 wpf bind event-handling

在这里,我为我的viewmodel添加了一个模型......

public dal.UserAccount User  {
  get
  {
    return _user;
  }
  set
  {
    _user = value;
    RaisePropertyChanged(String.Empty); 
   }
}
Run Code Online (Sandbox Code Playgroud)

我处理财产变更事件......

public event PropertyChangedEventHandler PropertyChanged;
private void RaisePropertyChanged(string propertyName)
{
  if (this.PropertyChanged != null)
    this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
Run Code Online (Sandbox Code Playgroud)

这是我使用的绑定.

<TextBox Text="{Binding User.firstname, Mode=TwoWay, ValidatesOnDataErrors=True, UpdateSourceTrigger=PropertyChanged}" />
Run Code Online (Sandbox Code Playgroud)

问题是更新视图时不触发propertychange事件?任何人都可以告诉我我做错了什么......

Bla*_*hma 9

PropertyChanged用于通知UI模型中已更改的内容.既然你改变一个内财产的的用户对象-的User属性本身没有改变,因此PropertyChanged事件不会引发.

其次 - 您的Model 应该实现INotifyPropertyChanged接口.- 换句话说,确保UserAccount实现INotifyPropertyChanged,否则更改firstname不会影响视图.

另一件事:

应该接收的参数RaisePropertyChanged是已更改的属性的名称.所以在你的情况下:

更改:
RaisePropertyChanged(String.Empty);


RaisePropertyChanged("User");

来自MSDN:

PropertyChanged事件可以通过使用null或String.Empty作为PropertyChangedEventArgs中的属性名称来指示对象上的所有属性都已更改.

(在这种情况下无需刷新所有属性)

您可以在此处阅读有关PropertyChanged 概念的更多 信息