C# 将文本绑定到我的文本块不是';行不通

C# 将文本绑定到我的文本块不是';行不通,c#,wpf,data-binding,binding,C#,Wpf,Data Binding,Binding,以下是xaml: <TextBlock Text="{Binding Errors}" Grid.Row="3" Foreground="Red"/> 然后在某些函数中,我更改\u errors变量 _errors = "Compiler Errors :\r\n"; 但是文本块中什么也没有发生。我做错了什么?您正在直接设置\u errors变量-因此没有引发属性更改。试着通过 Errors = = "Compiler Errors :\r\n"; 设置如下: Errors

以下是xaml:

<TextBlock Text="{Binding Errors}" Grid.Row="3" Foreground="Red"/>
然后在某些函数中,我更改
\u errors
变量

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

但是文本块中什么也没有发生。我做错了什么?

您正在直接设置
\u errors
变量-因此没有
引发属性更改。试着通过

Errors = = "Compiler Errors :\r\n";
设置如下:

Errors = "..."

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

console中是否存在绑定错误?@Jonas在console中?你是什么意思?也许textblock的datacontext没有在visual studio输出窗口(view>output)中设置为viewmodel对象@Jonas那里什么都没有发生,我没有得到任何异常,它就是不起作用。那么,我的dependency属性会是什么样子?@idish Your'Errors'不是dependency属性。它只是一个属性,在设置时将引发数据更改事件。更改代码
\u errors=“编译器错误:\r\n”
Errors=“编译器错误:\r\n”@Colin请举个例子?@Colin您的意思是,该属性将是自动属性?关于依赖属性的伟大文章:我添加了一个小编辑,可以帮助您理解。我想你是在试图通知包含你的内容字符串名称的财产。对不起,我的英语很抱歉,这不是问题所在,我对lambada表达式仍然使用相同的方法,我根本没有更改依赖属性。@idish好的,那么,您更改了什么?只有错误=“…”?如果是,这是因为当您通过调用Errors=“…”设置属性时,将执行属性的方法集,如果您只是设置变量_Errors,它将在不调用错误集方法的情况下设置变量,然后不通知更改。@idish谢谢您,但重要的是您需要改进。很高兴能帮上忙。对不起,我想我会取消对你答案的接受,我不想误导别人,希望你能理解。我还是会投你一票。
private string _errors = "";
public string Errors
{
    get { return this._errors; }
    set
    {
        if(_errors != value)
        {
            _errors = value;
            RaisePropertyChanged("Errors");
        }
    }
}
Errors = "..."