Могу ли я подавить вызов CanExecute в шаблоне MVVM
Я работаю с древовидной структурой, используя 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 ответ
Если вы используете Prism(Руководство по составному приложению для WPF и SilverLight) "DelegateCommand" в своей модели представления, вам придется явно вызывать command.RaiseCanExecuteChanged всякий раз, когда вы хотите, чтобы CanExecute вызывался для него.