DependencyProperty绑定不起作用

Ult*_*nks 1 c# data-binding wpf dependency-properties

我的目标是基于标志的值禁用和启用GUI上的一些项目,该标志将在窗口后面的代码中执行期间更改.我已经设置了DependencyProperty来实现这一目标.我相信我所要做的就是将this属性绑定到适当的"IsEnabled"属性,一切都应该有效.有些东西没有正确连接,所以没有任何事情发生.我在这里或某些地方遗漏了一些语法吗?

这是WPF(MainWindow.xaml)中的绑定:

<MenuItem Name="LoggingMenuItem" Header="_Logging" IsCheckable="True" Checked="LoggingMenuItem_Checked" IsEnabled="{Binding  ElementName=IsMonitoring}" />
Run Code Online (Sandbox Code Playgroud)

这是后面的代码中的"IsMonitoring"属性的声明(MainWindow.xaml.cs):

public static readonly DependencyProperty IsMonitoringProperty = 
   DependencyProperty.Register("IsMonitoring", typeof(Boolean), typeof(Window));

public bool IsMonitoring
{
   get { return (bool)GetValue(IsMonitoringProperty); }
   set { SetValue(IsMonitoringProperty, value); }
}
Run Code Online (Sandbox Code Playgroud)

Red*_*dog 5

您的绑定配置不正确.ElementName属性应指向Window中的"Element"(即控件),您应该使用Path属性指定属性名称.

在您的情况下,您希望为窗口指定一个名称.我倾向于使用"this"这个名字,但当然它可以是你想要的任何东西.

<Window x:Name="this"
        ...
        >
    ...
    <MenuItem IsEnabled="{Binding ElementName=this, Path=IsMonitoring}" />
    ...
</Window>
Run Code Online (Sandbox Code Playgroud)