2016-05-04 3 views
0

У меня следующая проблема:CanExecute называется, но ничего не происходит

У меня есть команда

CancelNewFilmCommand

с кодом:

public override void Execute(object item) 
    { 
     this.ViewModel.NewItem = null; 
     this.ViewModel.ShowItem = null; 
     var onCanExecuteChanged = this.CanExecuteChanged; 
     if (onCanExecuteChanged != null) 
     { 
      onCanExecuteChanged(this, new EventArgs()); 
     } 
     AddNewFilmWindow.CanExecute(this); 
    } 

теперь в Execute из CancelNewFilmCommand Я вызываю CanExecute команды AddNewFilmWindow. Я даю ссылку на CancelNewFilmCommand при инициализации и настройке как частное поле. Проблема в том, что AddNewFilmWindow.CanExecute (this); ничего не делать. Мне нужно это, чтобы не серая кнопка, связанная с AddNewFilmWindowCommand, и просто не может понять, как это сделать.

Помогите пожалуйста? Я пытаюсь решить весь этот день без успеха:/

+0

Вы не должны быть подклассы/реализации 'ICommand' или его производных для каждой команды. – Xiaoy312

+0

Почему нет? : O У меня есть класс для каждой команды. И каждая команда реализует ICommand. – Shadowmak

+2

Вы должны использовать общую реализацию ICommand и выставлять функции через 'Action' (для' Execute') и 'Func ' (для 'CanExecute'). – Xiaoy312

ответ

0

Вы должны запустить AddNewFilmWindow.RaiseCanExecuteChanged() вместо AddNewFilmWindow.CanExecuteChanged(this)

+0

Эй! У меня нет определенного метода RaiseCanExecuteChanged, и я не могу найти пример реализации. :/ – Shadowmak

+0

Пожалуйста, проверьте приведенную ниже ссылку, которая поможет вам внедрить RaiseCanExecuteChanged ......... https: //groups.google.com/forum/#! Topic/wpf-studentsle/8aMNS1ns6ig – Peekay

+0

Мне кажется, что RaiseCanExecuteChanged() является вещью RelayCommands. В потоке google вы указали, что есть много ссылок на RelayCommands, которые я не использую. – Shadowmak

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