wpf - 如何在 WPF 中的控件上绑定(bind)本地属性

标签 wpf binding properties local

我在 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)您的标签的DataContextButton ,然后尝试将其设置为 ContentCompanyName ,但是 CompanyName不是 Button 上的有效属性

指定 DataContext在您的装订Path绑定(bind)到 Button.DataContext.CompanyName而不是 Button.CompanyName
另外,我建议只绑定(bind) Content 而不是同时绑定(bind) DataContext 和 Content

<Label Content="{Binding ElementName=btnChange, Path=DataContext.CompanyName}" />

如果您的代码看起来与发布的代码示例完全相同,那么 ButtonLabel有相同的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/

相关文章:

c++ - 从 QT 中的主窗口发出信号

asp.net-core - 如何在.net core中使用.(variable_name)访问类属性?

c# - 如何在运行时在 xaml 中将特定单词作为超链接

c# - 在主线程上执行异步任务的最佳方式

c# - 自定义属性描述符和扁平化层次结构

swift - Xcode - 将文本字段绑定(bind)到 Swift 字典的元素

c# - 检查两个对象实例以查看它们是否相同

android-studio - Android Studio 不显示属性

.net - WPF 与 System.Drawing

c# - 在 Xamarin.iOS 中为 2 个依赖静态库创建绑定(bind)