2012-03-19 3 views
1

У меня есть список простого диалогового окна, которое содержит несколько флажков, я хотел бы, чтобы кнопка Ok была отключена, если пользователь не изменил настройку. По моему мнению, у меня есть свойство OkEnabled, что я привязывал свойство isEnabled кнопки, если флажок меняет его значение, он устанавливает OkEnabled в true, но по какой-то причине это не включает кнопку.IsEnabled привязка к boolean

public bool OkEnabled 
{ 
    get 
    { 
     return m_okEnabled; 
    } 
    set 
    { 
     m_okEnabled = value; 
     OnPropertyChanged("OkEnabled"); 
    } 
} 
<Button Content="OK" Style="{StaticResource MyButton}" Height="23" 
     HorizontalAlignment="Left" Margin="20" Name="m_okbutton" 
     VerticalAlignment="Top" Width="75" 
     Click="okClick" IsEnabled="{Binding Path=OkEnabled}"/> 

По какой-то причине кнопка Ok не изменит состояние, когда OkEnabled свойство изменяет состояние. Если я привяжу свойство IsEnabled к одному из флажков, я могу увидеть состояние изменения кнопки при изменении флажка.

+2

Вы видите какие-либо ошибки привязки? –

ответ

5

На мой взгляд, у меня есть OkEnabled свойство

По умолчанию привязки по отношению к DataContext, а не мнение. Вы установили представление как свой собственный DataContext?

+0

Я установил DataContext этого диалогового окна как представление, содержащее свойство OkEnabled. Это то, что вы имели в виду, жаль, что я совершенно новый для WPF. – user1145533

+0

Да, вот что я имел в виду. Проверьте окно вывода в Visual Studio, чтобы увидеть, есть ли ошибки привязки –

+0

нет, к сожалению, нет никаких ошибок привязки. Я не понимаю, почему кнопка меняет состояние, если я привязываю его к одному из свойств CheckBox. – user1145533

1

Как вы уже сказали, свойство OkEnabled находится в поле зрения. что неверно, если вы используете MVVM. Он должен быть в модели и назначать объект модели в datacontext представления.