Can Execute of a ICommand while a Context menu openRaise CanExcute команды контекстного меню, в то время откройте контекстного меню
С продолжением вышеупомянутого запроса, все же ее не в состоянии достичь.
Есть ли способ поднять команду CanExcute меню контекстного меню, открыв контекстное меню. Это нужно сделать в контекстном меню, и здесь я не могу получить доступ к viewmodel.
Любая идея по этому вопросу?
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 ». Покажите код, который в настоящее время вызывает событие CanExecuteChanged внутри 'BaseCommand'. –