Пользовательский элемент управления wpf, позволяющий вызывать методы управления для поддержки шаблона MVVM

#wpf #mvvm

#wpf #mvvm

Вопрос:

Я пишу пользовательский элемент управления в WPF, и у меня есть несколько методов в элементе управления, которые может вызывать пользователь моего элемента управления.

Хотя он может быть вызван напрямую, из-за запросов пользователей, я хочу, чтобы методы элемента управления вызывались способом MVVM.

После исследования я полагаю, что мне нужно внедрить ICommandSource в свой элемент управления. В MSDN есть пример, но я нахожу его слишком перегруженным для моей ситуации (или, может быть, потому, что я его вообще не понимаю!). Все, что я хочу, это позволить моим потребителям вызывать мой метод с помощью команды, а не помещать свой вызывающий код в код представления.

Пожалуйста, посоветуйте простой пример кода для реализации этого. Спасибо.

Ответ №1:

В Blend SDK есть behavior MethodInvoker (если мне не изменяет память), который позволяет вам привязываться к методу. Таким образом, вам не нужно реализовывать ICommand.

Ответ №2:

Если у вас есть доступ к отражению над .ЧИСТЫЙ код (или вы можете загрузить .ЧИСТЫЙ исходный код через загрузку) посмотрите, как MS делает это с помощью ButtonBase. Да, под капотом много кода, но это потому, что, если вы собираетесь создавать пользовательский элемент управления, вы должны учитывать оба сценария RoutedEvents и команд.