C# 将文本绑定到我的文本块不是';行不通
以下是xaml: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
<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 = "..."