这是一个技巧问题。我有许多命令应该在调用另一个命令后启用/禁用。比如说,我有打开、保存和启动命令。只有在成功执行打开命令后才能启用保存和启动命令。并且在调用 Start 命令后必须禁用 Open 和 Save 命令。这种情况的最佳做法是什么?
问问题
165 次
1 回答
1
每个实例ICommand
都有一个布尔CanExecute
元素。答案是将您的逻辑放入这些元素中。我使用一种类型,RelayCommand
因为我使用 MVVM,但这与这个问题无关......重要的是指定是否Command
可以执行的 bool 参数。我会做这样的事情:
private bool isOpen, hasStarted;
public ICommand Open
{
get { return new ActionCommand(action => OpenCommand(), canExecute =>
!hasStarted); }
}
private void OpenCommand()
{
// do your stuff here
isOpen = true;
}
public ICommand Save
{
get { return new ActionCommand(action => SaveCommand(), canExecute =>
isOpen && !hasStarted); }
}
private void SaveCommand()
{
// do your stuff here
}
public ICommand Start
{
get { return new ActionCommand(action => AudioTrack.RevertState(), canExecute =>
isOpen); }
}
private void StartCommand()
{
// do your stuff here
hasStarted = true;
}
显然,您需要在某个阶段再次将hasStarted
andisOpen
变量设置回 false 以重新启用该功能。
于 2013-08-14T15:47:56.680 回答