2016-05-03 3 views
0

У меня есть команда1, которая открывает окно, которое позволяет пользователю добавлять элемент. После выполнения команды 1 я изменю CanExecute, поэтому кнопка в графическом интерфейсе станет серым.Уведомлять CanExecute команды 1 после выполнения команды2

После этого пользователь может добавить/закрыть (command2) элемент. После того, как пользователь добавит/закрыл, я хотел бы «не серого» кнопки, чтобы пользователь мог добавить другой элемент.

Проблема в том, что я не знаю, как уведомить command1, тогда он может снова выполнить сам. Я попробовал CommandManager.InvalidateRequerySposed(); при выполнении функции command2, но это не вызовет CanExecute из команды1.

Есть ли способ «не серого» кнопки, чтобы его можно было использовать снова?

Если что-то неясно, спросите, и я предоставлю дополнительную информацию.

Вот код command1:

public class AddNewFilmWindowCommand : CommandBase<ViewModelCollection<FilmModel>> 
{ 
    public override event EventHandler CanExecuteChanged; 

    public AddNewFilmWindowCommand(ViewModelCollection<FilmModel> viewModelCollection) 
     : base(viewModelCollection) 
    { 
    } 

    public override bool CanExecute(object parameter) 
    { 
     if (this.ViewModel.NewItem == null) 
     { 
      return true; 
     } 
     else 
     { 
      return false; 
     } 
    } 
    public override void Execute(object item) 
    { 
     this.ViewModel.NewItem = new FilmModel(); 

     var onCanExecuteChanged = this.CanExecuteChanged; 
     if (onCanExecuteChanged != null) 
     { 
      onCanExecuteChanged(this, new EventArgs()); 
     } 
    } 
} 

command2 это почти то же самое, но выполнить это, конечно, разные.

спасибо.

ответ

0

Добавить метод AddNewFilmWindowCommand:

internal void RaiseCanExecuteChanged() { CanExecuteChanged?.Invoke(...); }

вызов новый метод из Command2 в соответствующие моменты времени.

Смежные вопросы