【发布时间】:2013-08-28 15:12:44
【问题描述】:
对于 MVVM 的东西相对较新,我遇到以下问题:
我有一个对象“用户”,这个对象公开了一些属性,比如用户名、电子邮件等。 在 mvvm 模型中,我有一个属性:
private IUser currentUser;
public IUser CurrentUser
{
get
{
return this.currentUser;
}
set
{
this.currentUser = value;
this.OnPropertyChanged("CurrentUser");
}
}
private void OnPropertyChanged(string propertyName)
{
if (this.PropertyChanged != null)
{
this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
在 XAML 中,TextBox 的绑定方式如下:
Text="{Binding CurrentUser.Email, Mode=TwoWay}"
更改电子邮件地址时,不会触发 OnPropertyChanged,因此其他代码(如 ICommands)无法“工作”。
有没有办法在用户更改 TextBox 中的文本时触发 OnPropertyChanged??
TIA, 保罗
【问题讨论】:
-
当您将 CurrentUser 属性更改为其他用户时,您的属性更改通知将被触发。除非您在 IUser 上实现了 INotifyPropertyChanged,否则当您更改 IUser 的各个属性时它将不起作用.. 这似乎与您的观察相符。