Вот сценарий:
- У меня есть изображение, отображающее некоторые данные
- Данные к визуалу могут поступать одним из двух способов
- через пользовательский ввод с клавиатуры или мыши
- Через какой-то бэкэнд-источник
- Оба этих ввода данных могут иметь одну из двух форм
- Контрольные данные или
- Необработанные данные для простого отображения
- Контрольные данные вызывают изменения в визуальном
- Необработанные данные просто отображаются как
Другими словами, представление обслуживается двумя мастерами, а именно пользовательским вводом и внутренним вводом.
Примером может служить многопользовательская игра, визуализация которой контролируется пользовательским вводом
но могут также иметь те же визуальные элементы, управляемые некоторыми входными данными бэкэнда (скажем, tcp / ip).
Другим примером может быть эмулятор терминала, который получает пользовательские данные, но также получает данные
из другого источника, будь то телнет или серийный номер и т. д.
Я думал о написании пользовательского элемента управления WPF для визуала. Другими словами,
это черный ящик, который будет интерпретировать входные данные и отображать результаты.
Ввести пользовательский ввод в этот пользовательский элемент управления легко, так как можно слушать
соответствующие события и обрабатывать их по мере необходимости. Тем не менее, как можно слушать
входы от бэкэнда? Предоставление свойства зависимости, к которому привязка не приводит
смысл, но показ метода на визуале, который вызывается с данными, также не делает
смысл.
Другим выбором является архитектура MVVM, в которой Модель является источником внутренних данных.
и модель представления делает всю работу. Он получает как данные бэкэнда (через модель)
и пользователь вводит (через соответствующие привязки команд или некоторые другие), и это делает
соответствующий смысл и привязывается к представлению, чтобы отобразить эти изменения.
Преимущество пользовательского элемента управления состоит в том, что его можно использовать как элемент управления, который
заботится о себе, так что потребитель должен сделать очень мало работы, чтобы использовать его
но проблема заключается в получении данных из бэкэнда. Преимущество метода MVVM заключается в том, что он аккуратно инкапсулирует логику обработки, представление и т. Д. Проблема в том, что
этот шаблон должен повторяться для каждого бэкэнда. Таким образом, делая визуальный очень голые кости
и разоблачение всей логики обработки вне контроля. В основном хочу
чтобы было очень легко потреблять, чтобы кто-то мог взять его и использовать без добавления
слишком много внешней логики для обработки и т. д. Все, что они предоставляют, - это их внутренние данные
источник, который подает в визуал.
Извините за длинное сообщение, но я изучаю WPF, и это интересный дизайн.
вопрос для меня. Все идеи, комментарии и т. Д. Приветствуются.
Спасибо за чтение.