当 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)=>{} 但我认为这不是一个好方法。
有没有人有其他想法?