Обработка Событий от нажатия мыши на средствах управления с шаблоном MVVM - лучшей практикой -

Я нашел на самом деле 2 способа обработать события от нажатия мыши на средствах управления с mvvm шаблоном.

Обоими путями является на самом деле 1 путь:

Инструментарий света MVVM http://mvvmlight.codeplex.com/


    
        
    

и смешение interactivity.dll с поведениями


  
    
  

Вы знаете о каком-либо лучшем методе?

Модератор: Почему heck являются моими последними 6 xaml строками кода, не видимыми вообще? Их глотают IE и Железный браузер. Сообщите, что администратор исправляет тот сценарий кода? не работа вообще очень часто. докажите: http://img251.imageshack.us/img251/5236/errorxt.png

5
задан Ray Burns 22 June 2010 в 08:54
поделиться

2 ответа

Это оба хороших способа сделать это, если вам нужно обрабатывать MouseDown в произвольных местах.

Однако таких ситуаций, как правило, немного, и они редки. Обычно есть более простой способ:

  • Вы уверены, что ваши объекты на самом деле не кнопки, которые просто не похожи на кнопки? Если это так, сделайте их настоящими объектами Button и создайте для них шаблон, чтобы они выглядели так, как вы хотите.
  • Вы уверены, что ваши объекты - это просто области выбора для объектов в списке? Если это так, измените контейнер с ItemsControl на ListBox и измените стиль ListBoxItem, чтобы использовать области выбора.
  • Выбираются ли графические пути ваших объектов? Используйте ToggleButton, содержимым которого является сам путь.

Есть много других примеров этого. На самом деле редко можно встретить ситуацию, в которой MouseDown сопоставляется с Command, и нет более чистого способа сделать то же самое.

7
ответ дан 18 December 2019 в 13:11
поделиться

Всегда есть другой вариант. Вы можете обрабатывать события WPF в коде программной части представления и вызывать соответствующий метод в модели представления. Шаблон MVVM не запрещает писать какой-либо код в файле кода программной части представления.

Пример приложения ViewModel WPF Application Framework (WAF) показывает, как это может работать.

6
ответ дан 18 December 2019 в 13:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: