2012-03-19 18 views
1

私はいくつかのチェックボックスを含む単純なダイアログボックスを持っています。ユーザーが設定を変更しない限り無効になるOKボタンが必要でした。私の見解では、ボタンのisEnabledプロパティをバインドしていたOkEnabledプロパティがあります。チェックボックスの値が変更されると、OkEnabledがtrueに設定されますが、何らかの理由でボタンが有効になりません。IsEnabledブール値へのバインド

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}"/> 

OkEnabledプロパティの状態が変化したときに[OK]をボタンの状態が変更されませんいくつかの理由。 IsEnabledプロパティをチェックボックスの1つにバインドすると、チェックボックスの変更に応じてボタンの変更状態が表示されます。私の見解では

+2

バインディングエラーがありますか? –

答えて

5

は私がOkEnabledプロパティデフォルトで

を持って、バインディングはDataContextのではなく、ビューに対して相対的です。ビューを独自のDataContextとして設定しましたか?

+0

私は、ダイアログのDataContextをOkEnabledプロパティを含むビューに設定しました。それはあなたが意味することです、残念私はWPFにはかなり新しいです。 – user1145533

+0

はい、そうです。 Visual Studioの出力ウィンドウでバインディングエラーがないか確認してください –

+0

残念ながらバインディングエラーはありません。 CheckBoxプロパティの1つにバインドすると、ボタンが状態を変更する理由がわかりません。 – user1145533

1

OkEnabledプロパティが表示されているとしています。 MVVMを使用している場合は正しくありません。これは、モデル内に存在し、モデルオブジェクトをdatacontext of viewに割り当てる必要があります。