Привязка DependencyProperty не работает - PullRequest
1 голос
/ 09 ноября 2011

Моя цель здесь состоит в том, чтобы отключить и включить некоторые элементы в графическом интерфейсе на основе значения флага, который будет изменен во время выполнения в коде позади окна.Я создал DependencyProperty для достижения этой цели.Я считаю, что все, что мне нужно сделать, это привязать свойство this к соответствующим свойствам IsEnabled, и все должно работать.Что-то неправильно подключается, поэтому ничего не происходит.Я здесь пропускаю какой-то синтаксис или что-то в этом роде?

Вот привязка в WPF (MainWindow.xaml):

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

Вот объявление свойства "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); }
}

1 Ответ

5 голосов
/ 09 ноября 2011

Ваша привязка настроена неправильно. Атрибут ElementName должен указывать на «Элемент» (то есть элемент управления) в окне, и вы должны использовать атрибут Path, чтобы указать имя свойства.

В вашем случае вы хотите дать окну имя для использования. Я склонен использовать имя «это», но, конечно, это может быть все, что вы хотите.

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