Могу ли я подавить вызов CanExecute в шаблоне MVVM - PullRequest
0 голосов
/ 17 августа 2010

Я работаю с древовидной структурой, используя WPF и шаблон MVVM.Я начинаю с создания 20 корневых узлов и ленивой загрузки дочерних узлов при нажатии на каждый узел.Например, если у меня есть следующее:

Level 1
    Level 1.1
Level 2
Level 3
    Level 3.1
    Level 3.2

Уровни 1, 2 и 3 загружаются во время выполнения.Уровни 1.1, 3.1 и 3.2 не будут загружаться до тех пор, пока не будут нажаты соответствующие родители.Уровни ниже 1.1 и т. Д. Загружаются одинаково, нажимая на их родителей.

Моя проблема в том, что когда я нажимаю на Уровень 1.1, чтобы загрузить его дочерние элементы, метод CanExecute проверяется на Уровень 1.1 И все корневыепредметы уровня для каждого ребенка уровня 1.1.Это приводит к потере времени, если есть много детей.

У меня вопрос, могу ли я как-то подавить вызов CanExecute?Мне не нужно называть это этими подуровнями, и я бы хотел обойти это.Я очень плохо знаком с фреймворком MVVM, поэтому не уверен, возможно ли это вообще.

1 Ответ

1 голос
/ 18 августа 2010

Если вы используете Prism (Руководство по составным приложениям для WPF и SilverLight) «DelegateCommand» в вашей модели представления, вам придется явно вызывать command.RaiseCanExecuteChanged всякий раз, когда вы хотите, чтобы CanExecute вызывался для него.

...