1

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)=>{} を使用しますが、これは良い方法だとは思いません。

他のアイデアはありますか?

4

1 に答える 1