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事件?任何人都可以告诉我我做错了什么......
PropertyChanged用于通知UI模型中已更改的内容.既然你改变一个内财产的的用户对象-的User
属性本身没有改变,因此PropertyChanged事件不会引发.
其次 - 您的Model 应该实现INotifyPropertyChanged接口.- 换句话说,确保UserAccount
实现INotifyPropertyChanged,否则更改firstname
不会影响视图.
另一件事:
应该接收的参数RaisePropertyChanged是已更改的属性的名称.所以在你的情况下:
更改:
RaisePropertyChanged(String.Empty);
至
RaisePropertyChanged("User");
来自MSDN:
PropertyChanged事件可以通过使用null或String.Empty作为PropertyChangedEventArgs中的属性名称来指示对象上的所有属性都已更改.
(在这种情况下无需刷新所有属性)
您可以在此处阅读有关PropertyChanged 概念的更多 信息
归档时间: |
|
查看次数: |
43133 次 |
最近记录: |