![]() 226 / 225 / 112
Регистрация: 20.10.2013
Сообщений: 808
|
|||||||||||
Использование диалогов в MVVM паттерне17.11.2015, 13:11. Показов 3307. Ответов 6
Метки нет Все метки)
(
Собственно к какой части модели относится диалог? View или ViewModel? И как лучше реализовать? Что можно почитать (а лучше посмотреть реальные проекты), чтобы в будующем таких вопросов не было?
Добавлено через 3 часа 11 минут Ладно, хорошо, допустим я реализовал диалог выбора файла. Вот моя ViewModel:
0
|
17.11.2015, 13:11 | |
Ответы с готовыми решениями:
6
Использование стандартных классов в качесве Модели в паттерне MVVM Создание интерфейса в паттерне MVVM Открытие второй формы в mvvm паттерне |
![]() ![]() ![]() |
||
17.11.2015, 13:41 | ||
Кроме того, такой код лишает вас возможности автоматического тестирования ViewModel, поскольку она будет запрашивать пользовательских действий. Решение - создать отдельный интерфейс IOpenFileDialog, и создать объект с дефолтной реализацией этого интерфейса (которая будет открывать виндовый OpenFileDialog). В VM вы будете дергать методы из IOpenFileDialog. Если работа будет на веб-сервере, то можно реализовать отдельную реализацию IOpenFileDialog, которая будет спрашивать имя файла у веб-пользователя. Если будет тестирование - то можно сделать отдельную реализацию-заглушку, которая вообще не будет ничего спрашивать а просто вернет какой-то дефолтный файл.
0
|
Жуткая тВарЬ
|
|
17.11.2015, 13:59 | |
nestquik2, Если чуть чуть поправить Storm23, то Ваша ViewModel должна пользоваться неким сервисов, который предоставит НЕ ФАЙЛ, а ИНФОРМАЦИЮ (например поток данных) - сервис должен быть реализован через интерфейс, о чем уже написал Storm23....А вот класс который реализует этот интерфейс уже может использовать, что угодно, хоть OpenFileDialog, хоть свой специфический контрол....
При таком подходе ViewModel получает некоторую зависимость в виде ИНТЕРФЕЙСА, которую можно подменять на разные реализации как угодно и где угодно в зависимости от того где приложение работает Добавлено через 1 минуту Для управления зависимостями надо бы познакомиться с IoC контейнерами, но это вообще то уже не mvvm...
0
|
![]() 226 / 225 / 112
Регистрация: 20.10.2013
Сообщений: 808
|
||||||||||||||||||||||||
17.11.2015, 15:40 [ТС] | ||||||||||||||||||||||||
Не по теме: Ev_Hyper, ну подумаешь название такое :p Ладно решил особо не запариватся и взял готовое решение MvvmDialogs Добавлено через 34 минуты И еще один вопрос: если понадобится локализовать Title этого самого OpenDialog, то как быть? По сути локализация это же чисто View...
1
|
Жуткая тВарЬ
|
||
17.11.2015, 15:49 | ||
1
|
![]() 226 / 225 / 112
Регистрация: 20.10.2013
Сообщений: 808
|
||||||
17.11.2015, 16:35 [ТС] | ||||||
amarf, тяжело без опыта в такое лезть... Мне допустим надо просто локализовать это (в методе SelectFiles):
0
|
17.11.2015, 16:35 | |
Помогаю со студенческими работами здесь
7
Хранение и использование в игре диалогов В ВК, при просмотре диалогов, либо чтении стен групп резко увеличивается использование ОЗУ браузером Chrome Использование mvvm Использование MVVM + Entity Framework Использование EntityFramework в шаблоне MVVM Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Опции темы | |
|
Новые блоги и статьи
![]() |
||||
Тестирование Pull Request в Kubernetes с vCluster
Mr. Docker 19.07.2025
Часто сталкиваюсь с серьезной дилемой при настройке тестовых окружений для проверки Pull Request в Kubernetes. С одной стороны, каждый PR требует изолированной среды — только так можно гарантировать,. . .
|
Мой 7 минутный ролик с крамольным предложением про шахматы, предлагаю заценить
_Ivana 18.07.2025
p2UhJNMGY94
|
Десять Middleware Node.js для эффективного кодинга
Reangularity 18.07.2025
Когда я только начинал работать с Node. js, количество пакетов в npm меня буквально парализовало. Сегодня их больше 1,3 миллиона — попробуй разберись, что стоит твоего внимания, а что нет. Я потратил. . .
|
Context и глубины Android
mobDevWorks 18.07.2025
В Android разработки Context напоминает воздух - он везде, жизненно необходим, но мало кто может детально объяснить его природу. Мы привыкли получать его как параметр, передавать дальше и. . .
|
Результаты исследования от команды MCM (июль 2025 г.)
Programma_Boinc 18.07.2025
Результаты исследования от команды MCM (июль 2025 г. )
Как сообщалось в наших предыдущих публикациях, мы изучаем гены, которые имеют наибольший рейтинг и ассоциируются с различными видами рака, в. . .
|
ИИ-чатбот на React с OpenAI и LangChain.js
Reangularity 17.07.2025
React давно стал для меня золотым стандартом фронтенд-разработки. Его компонентная структура, виртуальный DOM и однонаправленный поток данных идеально подходят для создания динамичных интерфейсов. . .
|
Пишем адаптер для локального хранилища S3 на C#
stackOverflow 16.07.2025
Разработка современных приложений часто требует интеграции с объектными хранилищами, и Amazon S3 стал де-факто стандартом в этой области. Однако работа с облачными сервисами в процессе разработки. . .
|
Старые замки
kumehtar 16.07.2025
Смотрел тут фото, попались пара старых замков. И сразу бросилось в глаза из отличие. Например:
Замок Бистон, в англии. Разрушенное сооружение. Но - не испорченное людьми, по крайней мере - на. . .
|
Java и Eclipse Store: Сверхбыстрые приложения с In-Memory DB
Javaican 15.07.2025
Eclipse Store — это микро-движок персистентности для Java, который позволяет хранить и извлекать нативные Java-объекты без необходимости преобразования данных или использования объектно-реляционного. . .
|
EmBitz, создание проекта, отладка, прошивка
locm 15.07.2025
Создание проекта для Blue Pill (STM32F103C8T6) в EmBitz 2. 30, написания кода blink, запуск отладки в ОЗУ, заливка релизной прошивки во flash используя ST-Link и др. . . .
|