我有一个标准的texblock绑定到我的viewmodel
中的属性 <TextBlock Grid.Row="3" Grid.Column="1" Text="{Binding MyErrorMessage, Mode=Default,UpdateSourceTrigger=PropertyChanged}" Foreground="Red"></TextBlock>
属性
private string _errorMessage;
public string MyErrorMessage
{
get { return _errorMessage; }
set
{
_errorMessage = value;
this.RaisePropertyChanged(this.MyErrorMessage);
}
}
我做标准
this.MyErrorMessage = "Login failed";
但是文本块没有更新。我可以看到正确调用了setter和getter,但仍然没有更新textblock。我错过了一些基本的东西吗?
答案 0 :(得分:1)
引发的属性应该包含字符串“MyErrorMessage”而不是属性的值。即。
this.RaizePropertyChanged( "MyErrorMessage" )
如果你解决了这个问题(其他一切也设置正确),你会没事的。
副注释:不需要Mode = Default(顾名思义,默认),UpdateSourceTrigger = PropertyChanged(也是默认值,并不会使代码更具可读性)。
答案 1 :(得分:0)
RaisePropertyChanged采用字符串 http://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged.propertychanged.aspx
所以只需将呼叫更改为
即可this.RaisePropertyChanged("MyErrorMessage");