|
Как сделать модальное окно в MVVM?
|
|||
---|---|---|---|
#18+
Как сделать модальное окно в MVVM? Для простых приложений делал так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Но при правильном подходе для MVVM в коде для view, ничего, кроме InitializeComponent() быть не должно. Вот и возник вопрос. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2011, 15:56 |
|
Как сделать модальное окно в MVVM?
|
|||
---|---|---|---|
#18+
Давайте подумаем. В классическом MVVM ViewModel не должна зависеть от View. То есть не содержать на нее прямых ссылок. VM, по происшествию какого-то события, должна оповестить кого-то, что View должна быть создана и зажечь её. Так как VM не зависит от View, то должен быть некто Mediator, который способен разрулить подобную ситуацию и взять на себя ответственность порождения окна и подсовывания туда модели. Этот Mediator, в идеале, должен жить в каком-то фреймворке, получать события и делать свою работу. Но, опять таки, всё зависит от архитектуры, от самого домена, от вариантов вариационности поведения приложения с пользователем, и тд и тп. Зная это, можно решить, каков будет операционный слой, или достаточно просто подкачивать данные во ViewModels из сервисов, возложив многие обязанности на них, а также понять, где будет жить домен, и кто будет посылать события (или дергать интерфейсные методы) этого медиатора (да и кто им будет впринципе). К тому же, существуют всякого рода MVVM фреймворки caliburn, mvvmlight, ...) ... |
|||
:
Нравится:
Не нравится:
|
|||
08.02.2011, 22:17 |
|
Как сделать модальное окно в MVVM?
|
|||
---|---|---|---|
#18+
vlsafпри правильном подходе для MVVM в коде для view, ничего, кроме InitializeComponent() быть не должно. Кто тебе такую ерунду сказал? В codebehind у View может быть любая логика, являющаяся частью модели представления. В том числе и обработчик, прикручиваемый к событию VM, и отображающий модальное окно. Как-то так. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2011, 12:22 |
|
Как сделать модальное окно в MVVM?
|
|||
---|---|---|---|
#18+
Верблюдvlsafпри правильном подходе для MVVM в коде для view, ничего, кроме InitializeComponent() быть не должно. Кто тебе такую ерунду сказал? В codebehind у View может быть любая логика, являющаяся частью модели представления. В том числе и обработчик, прикручиваемый к событию VM, и отображающий модальное окно. Как-то так. А тебе кто такую ерунду сказал, что у vm должны быть события? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2011, 12:35 |
|
Как сделать модальное окно в MVVM?
|
|||
---|---|---|---|
#18+
iА тебе кто такую ерунду сказал, что у vm должны быть события? Где я говорил что "должны"? Поциент путаецо в показаниях (ц) ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2011, 12:56 |
|
Как сделать модальное окно в MVVM?
|
|||
---|---|---|---|
#18+
Верблюд, че испугался окрика? событие бывает даже у тех, у кого их не должно быть, то что их у них нет то же событие , которое фиксирует гиннес ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2011, 01:45 |
|
Как сделать модальное окно в MVVM?
|
|||
---|---|---|---|
#18+
KirillMedvedevДавайте подумаем. В классическом MVVM ViewModel не должна зависеть от View. То есть не содержать на нее прямых ссылок.Как раз тот случай, когда проще забить на "классику" и добавить в МодельМорды ссылку на Морду. Можно вынести МодельМорды окна в отдельный класс со ссылкой на окно. Сделать несколько таких классов в зависимости от нужных типов диалогов (с кнопкой "закрыть", с кнопками "применить" и "отмена", и т. п.). ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2011, 08:11 |
|
Как сделать модальное окно в MVVM?
|
|||
---|---|---|---|
#18+
Алексей КKirillMedvedevДавайте подумаем. В классическом MVVM ViewModel не должна зависеть от View. То есть не содержать на нее прямых ссылок.Как раз тот случай, когда проще забить на "классику" и добавить в МодельМорды ссылку на Морду. Можно вынести МодельМорды окна в отдельный класс со ссылкой на окно. Сделать несколько таких классов в зависимости от нужных типов диалогов (с кнопкой "закрыть", с кнопками "применить" и "отмена", и т. п.). И в итоге получим полный говнокод с утечками памяти(сейчас, как раз подобный наблюдаю). В wpf вагон и маленькая тележка вариантов, которые позволяют обойтись без View в ViewModel и событий с обработчиками. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2011, 08:35 |
|
Как сделать модальное окно в MVVM?
|
|||
---|---|---|---|
#18+
iИ в итоге получим полный говнокод с утечками памяти(сейчас, как раз подобный наблюдаю).Главное что SRP не нарушен. А утечки памяти - это уже дело техники. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.02.2011, 10:19 |
|
Как сделать модальное окно в MVVM?
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2011, 11:28 |
|
Как сделать модальное окно в MVVM?
|
|||
---|---|---|---|
#18+
CalabongaЯ сделал свой собственый вариант , можно как вариант воспользоваться PRISM библиотекой. Собственный вариант пригоден только для статьи в блоге ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2011, 13:18 |
|
Как сделать модальное окно в MVVM?
|
|||
---|---|---|---|
#18+
i, ключевое слово "пригоден" :) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2011, 05:17 |
|
Как сделать модальное окно в MVVM?
|
|||
---|---|---|---|
#18+
В коде вьюхи, которая создает дочернее окно: Код: plaintext 1. 2. 3. 4. 5.
профит ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2011, 12:55 |
|
Как сделать модальное окно в MVVM?
|
|||
---|---|---|---|
#18+
vlsaf, Кирилл все правильно написал, я просто хочу добавть, что MVVM, как паттерн, отвечает только за state своей вьюхи. Не надо считать его единственным паттерном. Композицией вьюх (или models), или переходами между ними (типа вызова диалога или навигацию в другое окно и обратно) должны заниматься другие классы. Там свои паттерны, которые, в отличие от MVVM, очень сильно зависят от выбранной модели навигации (single view, tab view, mdi, docking), и поэтому не сильно формализованы. Но в целом, как пишет Кирилл, в приложение должен быть mediator, который обеспечивает передачу сообщения между различными VM и application services. Одним из этих app services является сервис осществляющий навигацию между vm. Когда медиатор передает ему сообщения, что vm хочет открыть такой диалог, он его открывает и результат передает в вызвающий vm. Написание навигационного сервиса вообще говоря не так уж просто, поэтому, если у вас приложение из одного окна, в котором надо вызвать простой диалог - лучше MVVM вообще не использовать. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2011, 15:31 |
|
Как сделать модальное окно в MVVM?
|
|||
---|---|---|---|
#18+
aaallleeexxxлучше MVVM вообще не использовать. +1 Сто раз уже дискутировали - полностью несъедобный паттерн для реальных условий. Абсолютно верно заметили про "медиатор" (он же контроллер или презентационный слой, если в терминах MVC / MVP), поддерживаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2011, 15:34 |
|
Как сделать модальное окно в MVVM?
|
|||
---|---|---|---|
#18+
МСУaaallleeexxxлучше MVVM вообще не использовать. +1 Сто раз уже дискутировали - полностью несъедобный паттерн для реальных условий. Абсолютно верно заметили про "медиатор" (он же контроллер или презентационный слой, если в терминах MVC / MVP ), поддерживаю. Минус архитектор, ну и каша у тебя в голове. Медиатор обозвать контроллером! Проводи больше времени в своей библиотеке ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2011, 15:58 |
|
Как сделать модальное окно в MVVM?
|
|||
---|---|---|---|
#18+
iМедиатор обозвать контроллером! Как ты был двоешником, так ты им и остался в жизни. MVC Самый что ни на есть посредник, который имеет право напрямую юзать модель и представление. Контроллер == Поведение. Поведение может быть чем угодно, в том числе и медиатором. MVC - более абстрактный паттерн, от которого идут унаследованные практики, например, такие, как MVP. Мы все прекрасно помним, как ты недавно отжигал с паттернами: 10597052 . (c)узнаваем: ссылки не в тему, помешательство на шаблонах и т.д. P.S. Сева, берись за голову, серьезно. Быть дурачком-клоуном в таком возрасте - признак даунизма. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2011, 16:24 |
|
Как сделать модальное окно в MVVM?
|
|||
---|---|---|---|
#18+
Муся, еще совсем недавно ты тут надрывался, что крутые разработчики сразу начинают говнокодить с обработчиками и паттерны с фреймворками тебе не нужны. Сначала попробуй применить хотя бы один по делу, а потом уже смеши народ, надувая щеки с умным видом. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2011, 20:02 |
|
Как сделать модальное окно в MVVM?
|
|||
---|---|---|---|
#18+
Как лихо ты соскочил с темы медиатора и контроллера. P.S. Для танкистов еще раз повторю про обработчики - они чудесно закладываются в средний слой (коде-бехайнд, кодогенерированный) и преспокойно себе взаимодействуют с моделью, которая в свою очередь через датаконтекст может повлиять на представление. Если уж сильно захочется - и на саму модель тоже (случай модальных окон и прочих жизненноважных ценностей). Тем самым получаем чудесную смесь MVVM и MVC. Поняла твоя тупа головушка, али будешь продолжать биться, что MVVM наше фсё? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2011, 22:57 |
|
Как сделать модальное окно в MVVM?
|
|||
---|---|---|---|
#18+
МСУЕсли уж сильно захочется - и на саму модель представление тоже ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2011, 22:58 |
|
Как сделать модальное окно в MVVM?
|
|||
---|---|---|---|
#18+
А накой нужна технология, при использовании которой вывод окошка превращается в проблему? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2011, 23:22 |
|
Как сделать модальное окно в MVVM?
|
|||
---|---|---|---|
#18+
МСУКак лихо ты соскочил с темы медиатора и контроллера. P.S. Для танкистов еще раз повторю про обработчики - они чудесно закладываются в средний слой (коде-бехайнд, кодогенерированный) и преспокойно себе взаимодействуют с моделью, которая в свою очередь через датаконтекст может повлиять на представление. Если уж сильно захочется - и на саму модель тоже (случай модальных окон и прочих жизненноважных ценностей). Тем самым получаем чудесную смесь MVVM и MVC. Поняла твоя тупа головушка, али будешь продолжать биться, что MVVM наше фсё? Муся, продемонстрируй этот говнокод для диалогов, а я тебе потом покажу минимум два варианта без привычного тебе ковыряния в обработчиках. Без хирургического вмешательства с трепанацией ты не поймешь, что MVVM - это паттерн, а не фреймворк с навигацией. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2011, 23:34 |
|
Как сделать модальное окно в MVVM?
|
|||
---|---|---|---|
#18+
ИзопропилА накой нужна технология, при использовании которой вывод окошка превращается в проблему? Эти "проблемы" давно уже решены. Единственное, что нужно - прочитать книгу, да посмотреть хотя бы один нормальный фреймворк ... |
|||
:
Нравится:
Не нравится:
|
|||
07.05.2011, 23:44 |
|
Как сделать модальное окно в MVVM?
|
|||
---|---|---|---|
#18+
ИзопропилА накой нужна технология, при использовании которой вывод окошка превращается в проблему?Отличная разминка для мозга. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.05.2011, 16:34 |
|
|
start [/forum/topic.php?fid=21&fpage=52&tid=1442280]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
29ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 145ms |
0 / 0 |