DependencyProperty绑定不起作用

时间:2011-11-09 19:23:52

标签: c# wpf data-binding dependency-properties

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

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

<MenuItem Name="LoggingMenuItem" Header="_Logging" IsCheckable="True" Checked="LoggingMenuItem_Checked" IsEnabled="{Binding  ElementName=IsMonitoring}" />

以下是&#34; IsMonitoring&#34;的声明。后面的代码中的属性(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); }
}

1 个答案:

答案 0 :(得分:5)

未正确配置绑定。 ElementName属性应该指向Window中的“Element”(即控件),您应该使用Path属性来指定属性名称。

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

<Window x:Name="this"
        ...
        >
    ...
    <MenuItem IsEnabled="{Binding ElementName=this, Path=IsMonitoring}" />
    ...
</Window>