c# - WPF 文本 block 不会在运行时显示属性更改

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

我有一个文本 block 如下

<TextBlock x:Name="lblErrorMessage" 
           Grid.Row="2" 
           Foreground="Red"   
           Margin="{Binding ControlMargin}" 
           HorizontalAlignment="Stretch" 
           VerticalAlignment="Stretch" 
           Background="Aqua"
           TextWrapping="Wrap" 
           Text="{Binding Error}"/>

还有一个 View 后面的属性

    /// <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";

我的问题是其他绑定(bind)工作(例如下面显示的边距)但文本 block “lblErrorMessage”绝对拒绝显示消息。

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

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

我已经尝试了“双向”“PropertyChanged”等设置的所有组合,但还没有香蕉。

有什么想法吗?

最佳答案

总结评论。

Error 已更改但如果您的类未实现 INotifyPropertyChanged 界面这将不起作用。

public class MyViewModel: INotifyPropertyChanged

关于c# - WPF 文本 block 不会在运行时显示属性更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22275297/

相关文章:

c# - NSubstitute 在循环中多次调用时返回意外值

c# - CPU友好的无限循环

c# - 如何在wpf中获取某个control.background点的颜色

C++11 lambda 返回 lambda

c++ - std::make_shared 在 VS2012 中进行两次构造函数调用

git merge 使用 vs2012 diff 工具

c# - 如何使用单个 'await Task.WhenAll' 简化多个等待?

c# - .Net 应用程序中带有 STATUS_STACK_OVERFLOW 的应用程序崩溃是否意味着堆栈溢出发生在 native 代码中?

c# - 从 Source 获取图片 uri

c# - WPF 控件的扩展方法导致 StackOverflowException