1

这是xml:

<TextBlock Text="{Binding Errors}" Grid.Row="3" Foreground="Red"/>

这是 ViewModel 代码:

  private string _errors = "";
 public string Errors
    {
        get { return this._errors; }
        set
        {
            if(_errors != value)
            {
                _errors = value;
                RaisePropertyChanged(() => Errors);
            }
        }
    }

然后在一些函数中我改变了_errors变量

  _errors = "Compiler Errors :\r\n";

但是在 TextBlock 中什么也没有发生。我究竟做错了什么?

4

2 回答 2

2

您正在_errors直接设置变量 - 所以不会RaisePropertyChanged被解雇。尝试通过设置值

Errors = = "Compiler Errors :\r\n";
于 2012-12-25T08:03:04.077 回答
1
private string _errors = "";
public string Errors
{
    get { return this._errors; }
    set
    {
        if(_errors != value)
        {
            _errors = value;
            RaisePropertyChanged("Errors");
        }
    }
}

像这样设置它:

Errors = "..."

我不知道 RaisePropertyChanged 方法是如何工作的,但是如果执行 lambda 表达式 ()=>Errors,它将返回 _errors 中包含的字符串,而不是更改的属性的名称?因此,如果方法存在,请尝试直接给出属性的名称。

于 2012-12-25T08:30:14.033 回答