Я разрабатываю приложения .NET / Winforms, которые работают в различных киосках.Эти приложения обычно являются полноэкранными и сенсорными.Недавно я хотел бы использовать технологию WPF и шаблон проектирования MVVM.
Жизнеспособным дизайном этих приложений является то, что у меня есть одна MainForm (Window), которая переключает экраны (UserControls) на нем.Таким образом, у вас есть только один «текущий» экран с кнопками, такими как «Предыдущая», «Следующая» (как в мастере).
Большинство приложений имеют очень похожую логику.Они например.необходимо получить OrderNumber (PIN-код, любой текст ..) от пользователя (один экран), обработать платеж картой (второй экран), ... Что отличается в разных приложениях, так это графический интерфейс: изображения, шрифты, цвета, разрешения монитора, расположение кнопок,...
Моя идея - написать типичные ViewModels и поместить их в общую библиотеку.Определенные приложения затем предоставят свои представления для этих моделей представления.Каждая модель представления будет привязана к одному конкретному представлению в течение всего срока службы приложения.
Пример:
Библиотека Common.dll
- содержит типичные модели представления: ScreenGetTextViewModel, ScreenPayByCardViewModel, ...
- (содержит также представления по умолчанию для моделей представления)
Приложение 1:
- ссылки Common.dll
- содержит представления для клиента 1: ScreenGetTextView, ScreenPayByCardView, ... (эти представления связаны с ViewModels из Common.dll)
Приложение 2:
- ссылки Common.dll
- содержит представления для клиента 2: ScreenGetTextView, ScreenPayByCardView, ... (эти представленияпривязаны к ViewModels из Common.dll)
MVVM выглядит для меня как правильный путь для достижения моих требований из-за логики и разделения GUI.
Мой вопрос: как сделать это в WPF, что использовать, где вдохновлять себя.Я предпочитаю простые решения без сторонних инструментариев MVVM (если это разумно и возможно).
Некоторые подвопросы / идеи:
Как указать, какое представление должно привязываться к конкретной модели представления?Использовать какой-нибудь ViewLocator?Поместить свойство View в ViewModel?
Я предпочитаю писать Common.dll, не связанный с WPF, из-за возможных приложений UWP в будущем (если это возможно).
Спасибо