2
Can Execute of a ICommand while a Context menu open擡起上下文菜單命令的CanExcute同時打開上下文菜單
通過上述查詢的延續,仍然是其沒有能夠實現。
有什麼辦法可以在打開上下文菜單的同時提高上下文菜單命令的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);
}
}
你可以提供你的'ICommand'實現菜單嗎?如果你委託'CommandManager'來提升'CanExecute',它通常應該可以工作。 –
@Mathew:我已經更新了上面的代碼,有沒有什麼辦法可以提高canExcute。這個上下文菜單確實知道它會攜帶哪些項目,但是如果這個上下文菜單的項目有任何命令,它需要提高ICommand的可執行性。 – Sankarann
請顯示'ICommand'的實現,即實現那個接口的類,它從你的代碼看起來似乎是'BaseCommand'。顯示目前在'BaseCommand'內引發'CanExecuteChanged'事件的代碼。 –