#wpf #mvvm
#wpf #mvvm
Вопрос:
Я пишу пользовательский элемент управления в WPF, и у меня есть несколько методов в элементе управления, которые может вызывать пользователь моего элемента управления.
Хотя он может быть вызван напрямую, из-за запросов пользователей, я хочу, чтобы методы элемента управления вызывались способом MVVM.
После исследования я полагаю, что мне нужно внедрить ICommandSource в свой элемент управления. В MSDN есть пример, но я нахожу его слишком перегруженным для моей ситуации (или, может быть, потому, что я его вообще не понимаю!). Все, что я хочу, это позволить моим потребителям вызывать мой метод с помощью команды, а не помещать свой вызывающий код в код представления.
Пожалуйста, посоветуйте простой пример кода для реализации этого. Спасибо.
Ответ №1:
В Blend SDK есть behavior MethodInvoker (если мне не изменяет память), который позволяет вам привязываться к методу. Таким образом, вам не нужно реализовывать ICommand.
Ответ №2:
Если у вас есть доступ к отражению над .ЧИСТЫЙ код (или вы можете загрузить .ЧИСТЫЙ исходный код через загрузку) посмотрите, как MS делает это с помощью ButtonBase. Да, под капотом много кода, но это потому, что, если вы собираетесь создавать пользовательский элемент управления, вы должны учитывать оба сценария RoutedEvents и команд.