WPF文本块未更新

本文关键字:更新 文本 WPF | 更新日期: 2023-09-27 18:27:24

我有一个标准的texblock绑定到我的视图模型中的属性

  <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被正确调用,但文本块仍然没有更新。我是不是错过了一些基本的东西?

WPF文本块未更新

引发的属性应该具有字符串"MyErrorMessage",而不是该属性的值。即

this.RaizePropertyChanged( "MyErrorMessage" )

如果你解决了这个问题(其他一切都设置正确),你就没事了。

附带注释:不需要Mode=Default(顾名思义,它是默认值)和UpdateSourceTrigger=PropertyChanged(也是默认值,不会使代码更可读)。

RaisePropertyChanged采用字符串http://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged.propertychanged.aspx

所以只需将呼叫改为

this.RaisePropertyChanged("MyErrorMessage");