コンテキスト メニューが開いている間に ICommand を実行できます
上記のクエリの継続では、まだ達成できません。
コンテキスト メニューを開いているときに、コンテキスト メニュー コマンドの CanExcute を発生させる方法はありますか。これはコンテキスト メニュー自体で行う必要があり、ここではビューモデルにアクセスできません。
これについて何か考えはありますか?
public static BaseCommand SaveCommand
{
get
{
if (saveCommand == null)
saveCommand = new BaseCommand(OnSaveCommandClicked, OnSaveCommandCanExcute);
return saveCommand;
}
}
ここで、BaseCommand は ICommand から派生しています。
public class BaseCommand : ICommand
{
private Predicate<object> _canExecute;
private Action<object> _method;
public event EventHandler CanExecuteChanged;
public BaseCommand(Action<object> method)
: this(method, null)
{
}
public BaseCommand(Action<object> method, Predicate<object> canExecute)
{
_method = method;
_canExecute = canExecute;
}
public bool CanExecute(object parameter)
{
if (_canExecute == null)
{
return true;
}
return _canExecute(parameter);
}
public void Execute(object parameter)
{
_method.Invoke(parameter);
}
}