|
А как делать кошерно по MVVM?
|
|||
---|---|---|---|
#18+
Ну, все видели 100 туториалов по MVVM, делаем окно, к нему ViewModel, свойства и всё такое. А как организовывать межоконную передачу данных? Допустим, у меня приложение, у него окно с ViewModeлью. Я открываю диалог настроек (модальный). Откуда брать VM для него? Писать новую, и создавать её каждый раз, когда надо открыть окошко? Выделить набор полей в основной VM? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2016, 16:59 |
|
А как делать кошерно по MVVM?
|
|||
---|---|---|---|
#18+
Что мешает создать отдельную VM для этого окна? Хранить его можно и в поле основной модели, или синглтоном сделать, если окно настроек открывается из разных мест, или создавать каждый раз, заполняя из БД и т.п. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2016, 21:05 |
|
А как делать кошерно по MVVM?
|
|||
---|---|---|---|
#18+
13th, у меня сделано так: есть WindowManager : IWindowManager, который открывает либо окно, либо диалоговое окно, в качестве аргументов ему нужна только ViewModel. Далее WM ищет в ресурсах приложения и в ресурсах Parent окна (если это DialogWindow) стиль с ключом {x:Type MyViewModel} для данной модели и открывает окно. MyViewModel наследован от WindowViewModel : IWindowModel куда засунуто закрытие окна из ViewModel, проверка при закрытии и прочие ништяки. В WindowManager добавлена вся анимация для окон, а список окон сделан в виде дерева или списка, кому как удобно. В найденном стиле заданы все параметры для окна, включая свойства Content и ContentTemplate, либо ContentTemplateSelector, иконка и т.д. Не думаю, что вариант претендует на удобный :) в текущем проекте по верх Manager'а окна идет еще Manager табов. WM сделан по singleton шаблону и его можно получить в любой момент либо из ViewModel, либо из View. Когда открываю DialogBox из ViewModel, возникает вопрос, какое окно считать родительским, чтоб его "заблокировать", но я не парюсь и просто беру текущее. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2016, 21:12 |
|
А как делать кошерно по MVVM?
|
|||
---|---|---|---|
#18+
Shocker.Pro, ничего не мешает. Я спрашиваю: какая практика считается или показалась другим специалистам более usefull. Я оба описанных мною вариантов попробовал - пока не определился. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2016, 13:07 |
|
|
start [/forum/topic.php?fid=21&fpage=11&tid=1440629]: |
0ms |
get settings: |
10ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
74ms |
get topic data: |
14ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 178ms |
0 / 0 |