我在 WPF 上有两个控件
<Button HorizontalAlignment="Center"
Name="btnChange"
Click="btnChange_Click"
Content="Click Me" />
<Label Name="lblCompanyId"
HorizontalAlignment="Center"
DataContext="{Binding ElementName=_this}"
Content="{Binding Path=CompanyName}" />
正如我们所看到的,标签绑定(bind)到本地属性(在代码后面),当我单击按钮时,我在标签上看不到任何值......下面是我背后的代码...
public static readonly DependencyProperty CompanyNameProperty =
DependencyProperty.Register("CompanyName", typeof(string), typeof(Window3), new UIPropertyMetadata(string.Empty));
public string CompanyName {
get { return (string)this.GetValue(CompanyNameProperty); }
set { this.SetValue(CompanyNameProperty, value); }
}
private void btnChange_Click(object sender, RoutedEventArgs e) {
this.CompanyName = "This is new company from code beind";
}
最佳答案
您当前正在绑定(bind)您的标签的DataContext
到 Button
,然后尝试将其设置为 Content
至CompanyName
,但是 CompanyName
不是 Button
上的有效属性
指定 DataContext
在您的装订Path
绑定(bind)到 Button.DataContext.CompanyName
而不是 Button.CompanyName
另外,我建议只绑定(bind) Content 而不是同时绑定(bind) DataContext 和 Content
<Label Content="{Binding ElementName=btnChange, Path=DataContext.CompanyName}" />
如果您的代码看起来与发布的代码示例完全相同,那么
Button
和 Label
有相同的DataContext
, 所以你可以直接绑定(bind)到 CompanyName
<Label Content="{Binding CompanyName}" />
编辑
刚刚注意到您的标签绑定(bind)到一个名为
_this
的控件。 .我原以为是 Button,虽然我现在看到您的 Button 的名称是 btnChange
,而不是 _this
.不过没关系,答案还是一样的。您正在尝试绑定(bind)到 UI 控件的
CompanyName
属性,它不是一个有效的属性。
关于wpf - 如何在 WPF 中的控件上绑定(bind)本地属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8580477/