我有一个如下的文本块
<TextBlock x:Name="lblErrorMessage"
Grid.Row="2"
Foreground="Red"
Margin="{Binding ControlMargin}"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Background="Aqua"
TextWrapping="Wrap"
Text="{Binding Error}"/>
和
后面视图中的属性 /// <summary>
/// The error message
/// </summary>
private string _error = "kkbkbkbkbjK";
/// <summary>
/// The error message
/// </summary>
public string Error
{
//return the error message
get { return _error; }
set
{
//set the error message
_error = value;
//fire the property changed event
if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs("Error"));
}
}
然后我有一个方法,它通过一个iccommand来执行,更新Error
//set the error message
Error = "Login Succeeded";
我的问题是,其他绑定工作(如下面所示的Margin),但文本块"lblErrorMessage"绝对拒绝显示消息。
如果我在构造函数中设置了Error属性,它会显示。如果我设置_error变量显示
如果我在运行时设置属性,它似乎不会拾取更改。
我已经尝试了"双向"PropertyChanged"等设置的所有组合,但还没有香蕉。
任何想法?
总结一下注释。
你发布的代码很好,因为当Error
发生变化时,你会用正确的属性名称引发PropertyChanged
事件,但如果你的类不实现INotifyPropertyChanged
接口,这将不起作用。
public class MyViewModel: INotifyPropertyChanged