WPF PRISM 6 DelegateComand ObservesCanExecute
WPF PRISM 6 DelegateComand ObservesCanExecute
提前致谢!
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()
的工作方式“很像”DelegateCommand(Action executeMethod, Func<bool> canExecuteMethod)
的 canExecuteMethod
参数。
但是,如果您有 布尔值 属性 而不是 方法 ,则不需要定义canExecuteMethod
与 ObservesCanExecute
.
在您的示例中,假设 CanUpdate
不是 方法 ,只是假设它是 布尔值 属性.
然后你可以将代码更改为 ObservesCanExecute(() => CanUpdate)
并且只有当 CanUpdate
布尔值 属性 计算为 true
时 DelegateCommand
才会执行(不需要定义一个方法)。
ObservesCanExecute
就像 属性 上的“快捷方式”,而不是必须定义一个方法并将其传递给 DelegateCommand
构造函数的 canExecuteMethod
参数.
提前致谢!
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()
的工作方式“很像”DelegateCommand(Action executeMethod, Func<bool> canExecuteMethod)
的 canExecuteMethod
参数。
但是,如果您有 布尔值 属性 而不是 方法 ,则不需要定义canExecuteMethod
与 ObservesCanExecute
.
在您的示例中,假设 CanUpdate
不是 方法 ,只是假设它是 布尔值 属性.
然后你可以将代码更改为 ObservesCanExecute(() => CanUpdate)
并且只有当 CanUpdate
布尔值 属性 计算为 true
时 DelegateCommand
才会执行(不需要定义一个方法)。
ObservesCanExecute
就像 属性 上的“快捷方式”,而不是必须定义一个方法并将其传递给 DelegateCommand
构造函数的 canExecuteMethod
参数.