CanExecute 条件が変更されたときに RaiseCanExecuteChanged を実行したいと思います。例えば:
public class ViewModel
{
public viewModel()
{
Command = new RelayCommand(action,condition);
}
private bool condition()
{
return this.Condition1&&this.Condition2&&this.Condition3;
}
public bool Condition1
{
get{...}
set{.... **command.RaiseCanExecuteChanged();}**
}
public bool Condition2
{
get{...}
set{.... command.**RaiseCanExecuteChanged();}**
}
public bool Condition3
{
get{...}
set{.... **command.RaiseCanExecuteChanged();}**
}
}
それはうまくいきます。しかし、あまり多くの RaiseCanExecuteChanged を記述するのは好きではなく、これらの変更を自動的に設定したいと考えています。例: RelayCommand で、RaiseChanged という名前の新しいメソッドを作成します。
public void RaiseChanged(XXXXXX XXX, params string[] propertyNames)
{
// for each property in propertyNames,
// RaiseCanExecuteChanged();
}
ViewModel vm をパラメーターとして入れ、 vm.PropertyChanged+=(s,e)=>{} を使用しますが、これは良い方法だとは思いません。
他のアイデアはありますか?