Создание приложения WPF вокруг стороннего контроля - PullRequest
0 голосов
/ 05 октября 2018

Мне нужно преобразовать приложение Winforms достойного размера в приложение WPF по шаблону MVVM.Я не уверен, что лучший способ сделать это.

  1. Приложение построено на стороннем элементе управления картой.
  2. Несколько окон: главное окно, отображающее карту, и другие окна, которые позволяют пользователю изменять свойства карты.(добавить слои, изменить стили и т. д.).

Мой план состоял в том, чтобы создать видовую модель для каждого окна и иметь базовую видовую модель, содержащую сам элемент управления картой и любые свойства / методы, которые необходимо было использовать совместно..

Главное, в чем я не уверен - это как обрабатывать операции с картами, встроенные в элемент управления.Например, есть событие MapMouse_Down.Обычно я просто помещал бы это в код позади, если я не следовал за MVVM, и обрабатывал бы это там.Это правильный способ справиться с этим?

Ответы [ 3 ]

0 голосов
/ 05 октября 2018

WPF отличается для Winforms, подход основан на привязке свойств.
Ниже приведен пример использования MVVM. Простой пример MVVM

0 голосов
/ 05 октября 2018

Обычно я просто вставил бы это в код, если бы не следил за MVVM, и обработал бы его там.Это правильный способ справиться с этим?

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

Существуют разные способы обработки «событий» вMVVM зависит от того, какой тип элементов управления вы используете, но вы обычно определяете команды в модели представления и вызываете их из представления.Пожалуйста, обратитесь к этому сообщению в блоге для получения дополнительной информации.

0 голосов
/ 05 октября 2018
  1. Идеально иметь отдельную модель вида для каждого отдельного типа окна.

  2. Модели вида никогда не должны содержать элементов управления.Они должны содержать только абстракции элементов управления.Если все ваши окна имеют компоненты отображения, только тогда ваша базовая модель представления окна должна иметь абстракцию элемента управления отображением.(Пример той абстракции, о которой я говорю: представьте себе представление, в которое пользователь должен ввести имя. Представление будет иметь TextBox со свойством Text. Модель представления будет иметь Name свойство. Представление будет связывать свойство TextBox Text со свойством Name модели представления. Выяснение правильных абстракций для более крупных приложений является одной из задач MVVM.)

  3. Прекрасно иметь обработчики событий в вашем представлении, если ваши элементы управления не поддерживают привязку данных или не поддерживают ICommand.Но обработчик событий в вашем представлении должен делать как можно меньше, вместо этого просто передавая управление вашей модели представления, которая обновит свое абстрактное представление представления, к которому представление затем будет повторно синхронизироваться посредством привязки данных или логики ручной синхронизации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...