提前致谢!
我应该如何在PRISM 6的DelegateCommand中使用ObservesCanExecute?
public partial class UserAccountsViewModel: INotifyPropertyChanged
{
public DelegateCommand InsertCommand { get; private set; }
public DelegateCommand UpdateCommand { get; private set; }
public DelegateCommand DeleteCommand { get; private set; }
public UserAccount SelectedUserAccount
{
get;
set
{
//notify property changed stuff
}
}
public UserAccountsViewModel()
{
InitCommands();
}
private void InitCommands()
{
InsertCommand = new DelegateCommand(Insert, CanInsert);
UpdateCommand = new DelegateCommand(Update,CanUpdate).ObservesCanExecute(); // ???
DeleteCommand = new DelegateCommand(Delete,CanDelete);
}
//----------------------------------------------------------
private void Update()
{
//...
}
private bool CanUpdate()
{
return SelectedUserAccount != null;
}
//.....
}
不幸的是,我对C#中的表达式不熟悉。另外,我认为这对其他人会有帮助。
最佳答案
ObservesCanExecute()
的工作方式大致类似于canExecuteMethod
的DelegateCommand(Action executeMethod, Func<bool> canExecuteMethod)
参数。
但是,如果您具有 bool 属性而不是方法,则无需使用canExecuteMethod
定义ObservesCanExecute
。
在您的示例中,假设CanUpdate
不是方法,而只是它是 bool 属性。
然后,您可以将代码更改为ObservesCanExecute(() => CanUpdate)
,并且仅当DelegateCommand
bool 值属性的值为CanUpdate
时才执行true
(无需定义方法)。ObservesCanExecute
就像是属性的“快捷方式”,而不必定义方法并将其传递给canExecuteMethod
构造函数的DelegateCommand
参数。
关于WPF PRISM 6 DelegateComand观察可以执行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34266935/