クラスがあります。それを SomeClass と呼びましょう。SomeClass は INotifyPropertyChanged を実装し、これは次のようにコーディングされます。
public class SomeClass
{
.
.
.
private bool _isDirty;
public bool IsDirty
{
get { return this._isDirty; }
set
{
this._isDirty = value;
this.NotifyPropertyChanged("IsDirty");
}
}
public event PropertyChangedEventHandler PropertyChanged;
public void NotifyPropertyChanged(string propertyName)
{
if (this.PropertyChanged != null)
{
this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
SomeClass
というインスタンスを使用するフォームがありますinstanceOfSomeClass
このプロパティはすべて正しく起動しますが、主な問題は、そのプロパティに [保存] ボタンがバインドされていることです。
<Button Content="Save" Height="23" Name="btnSave" IsEnabled="{Binding Path=IsDirty}" Width="60" Margin="10, 10" HorizontalAlignment="Right" Click="btnSave_Click" />
コンボ ボックスの SelectionChanged イベントは、次のように定義されているプロパティを変更することになっています。
<ComboBox Name="cboListOfUsers" ItemsSource="{Binding}" SelectionChanged="cboSomeCombo_SelectionChanged"/>
(スタイルなど、質問に関係のないコンボボックスの定義の一部を削除しました)
重要なのは、コンボ ボックスの DataContext が instanceOfSomeClass に設定されておらず、カスタム クラスの List に設定されていないことです。
SelectionChanged イベントが発生し、次のようなコードがあります。
instanceOfSomeClass.IsDirty = true;
instanceOfSomeClass.User = (ApplicationUser) cboSomeCombo.SelectedItem;
これは実行され、プロパティを変更して適切な通知を発生させますが、コマンド ボタンは有効になりません。これは、コンボの DataContext がコマンド ボタンの DataContext と異なるためだと推測されます
SelectionChanged イベントで DataContext を変更しようとしましたが、コンボで何も選択されません (ただし、[保存] ボタンは有効になっています)。
どんな助けでも大歓迎です