WPF文本块不会在运行时显示属性更改

时间:2014-03-08 21:25:58

标签: c# wpf visual-studio-2012 mvvm .net-4.5

我有一个文本块如下

<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"));
        }
    }

然后我有一个方法,它通过更新错误的ICommand执行

 //set the error message
 Error = "Login Succeeded";

我的问题是其他绑定有效(例如下面显示的边距),但文本块“lblErrorMessage”绝对拒绝显示该消息。

如果我在它显示的构造函数中设置了Error属性。 如果我设置显示

的_error变量

似乎如果我在运行时设置属性,它就不会接受更改。

我已尝试过“双向”“PropertyChanged”等设置的所有组合,但尚未使用香蕉。

有什么想法吗?

1 个答案:

答案 0 :(得分:4)

总结评论。

PropertyChanged发生更改时,如果您使用正确的属性名称引发Error事件,那么您发布的代码就可以了,但如果您的类没有实现INotifyPropertyChanged接口,则无效。

public class MyViewModel: INotifyPropertyChanged