управление сложностью
|
|
1 | |
Архитектура MVVM в многооконном приложении17.04.2018, 14:22. Показов 10158. Ответов 38
Метки нет (Все метки)
Приветствую, ребята. Подскажите пожалуйста, кто как проектирует MVVM при использовании нескольких окон в приложении ?
На "метаните" читал, но там без MVVM (по сути, как в WinForms) Добавлено через 31 минуту нашел парочку тем: MVVM и открытие другого View Открытие одной формы из другой
0
|
17.04.2018, 14:22 | |
Ответы с готовыми решениями:
38
Управление окнами в многооконном приложении MVVM в многовкладочном приложении Архитектура для сетевого взаимодействия в приложении В указанном dsn архитектура драйвера и архитектура приложения не соответствуют друг другу |
1847 / 1354 / 428
Регистрация: 10.06.2011
Сообщений: 2,128
|
|
17.04.2018, 14:23 | 2 |
2
|
управление сложностью
|
|
22.04.2018, 12:17 [ТС] | 4 |
novikov.ea, наконец-то руки дошли "покурить". Но это немного не то. Дело в том, что в вашем примере, каждый раз создается дочернее окно, при щелчке по кнопке. Это не совсем то, что необходимо.
Нашел вот такой пример, по сути, работает как открытие модального окна. MVVM_OpenNewWindowMinimalExample-master.7z Осталось только разобраться что к чему...
0
|
1847 / 1354 / 428
Регистрация: 10.06.2011
Сообщений: 2,128
|
|
22.04.2018, 12:31 | 5 |
Так просто исправьте код в DialogManager. Вместо
window.Show вызывайте window.ShowDialog , и будет модальное окно
0
|
управление сложностью
|
|
22.04.2018, 16:16 [ТС] | 6 |
Если вас зовут Алексей Лосев, то я читал ваш блог
Добавлено через 1 час 5 минут т.е. по сути, в приложении должно открыться дочернее окно, добавленное в проект
0
|
1847 / 1354 / 428
Регистрация: 10.06.2011
Сообщений: 2,128
|
|
22.04.2018, 23:53 | 7 |
0
|
89 / 77 / 38
Регистрация: 11.10.2015
Сообщений: 860
|
|||||||||||||||||||||
23.04.2018, 16:26 | 8 | ||||||||||||||||||||
Приветствую ребята! Прошу прощения что влез со своими граблями, только ради того, что бы не плодить темы. Да и сабж похож. Есть два окна (MainWindow и SecondWindow). На мейн экране кнопка. Нажав на нее нужно открыть окно и изменить запись со "Старт" на "Стоп". После закрытия снова изменить контент кнопки на "Старт". Делаю на MVVM + реализация интерфейса
Кликните здесь для просмотра всего текста
Мейн морда
0
|
1847 / 1354 / 428
Регистрация: 10.06.2011
Сообщений: 2,128
|
|
23.04.2018, 16:42 | 9 |
0
|
89 / 77 / 38
Регистрация: 11.10.2015
Сообщений: 860
|
|
23.04.2018, 16:45 | 10 |
А зачем модальное окно? Полноценное окно мне бы. Да и кнопка даже с модальным окном при закрытии не дергает событие и не меняет контент.
0
|
1847 / 1354 / 428
Регистрация: 10.06.2011
Сообщений: 2,128
|
|
23.04.2018, 17:54 | 11 |
Тогда на кнопку, которая открывает окно нужно повесить команду, CanExecute которой будет возвращать false, если окно уже открыто и true, если не открыто.
0
|
1847 / 1354 / 428
Регистрация: 10.06.2011
Сообщений: 2,128
|
|
23.04.2018, 23:41 | 13 |
Почтальон, вы вольны сделать так, как захотите. Лично мне паттерн нравится.
1
|
23.04.2018, 23:51 | 14 | ||||||||||||||||||||
Нужно поставить NuGet пакет MvvmLight. Я перед заливкой удалил, но что-то автоматом он у меня после этого не восстанавливается. ДУмаю, кому нужно, тот разберётся.
Вот посидел, набросал. Сразу скажу, нет особого желания пилить это дело, вроде получилось более-менее. Там кому нужно додумает, мне пока не нужно, но было интересно попробовать это дело заставить работать и не обращаться напрямую к окнам во ViewModel. Если есть предложения по архитектуре, то послушал бы. DialogManager особо не тестил, взял его по ссылке с этого форума и чуть изменил, я подобное уже сам писал, второй раз лень было )) Jman, собственно работает так, как ты и хотел.
Кликните здесь для просмотра всего текста
1
|
24.04.2018, 00:00 | 15 |
Кстати, я уже вижу минус. Регистрируется окно с указанием типа вью модели, а при получении контенера нужно знать внутреннюю реализацию DialogManager(а), чтобы получить доступ по ключу. Это можно допилить.
0
|
1847 / 1354 / 428
Регистрация: 10.06.2011
Сообщений: 2,128
|
|
24.04.2018, 09:39 | 17 |
Согласен, в начале пути всегда встречается много сложностей. В любом случае, я предоставил вам пример рабочего варианта реализации. Вы можете использовать его, если захотите.
1
|
89 / 77 / 38
Регистрация: 11.10.2015
Сообщений: 860
|
|
24.04.2018, 09:42 | 18 |
Спасибо ребят! Мда... Меня все отговаривают от этого паттерна. Но я не сдамся =)
0
|
24.04.2018, 10:23 | 19 |
Если в будущем планирует человек работать программистом и иметь дело с WPF/UWP, то могут отговаривать, а знать его и уметь использовать будет нужно. Например, на моей новой работе MVVM используется в уже написанных проектах, думаю, что умение писать с использованием MVVM явно не помешает.
Добавлено через 1 минуту Я видел проекты, написанные без MVVM, это такое УГ, что просто нет желания с этим работать. Возможно, что это проблема конкретной реализации этих проектов. Немного напряжно смотреть на мешанину из обращений к контролам и логики. Как ни крути, но они будут иногда перемешиваться.
0
|
1847 / 1354 / 428
Регистрация: 10.06.2011
Сообщений: 2,128
|
|
24.04.2018, 10:35 | 20 |
Такое возможно, если программист не нашёл решения, как этого можно избежать. Бывают ситуации, когда нужно пораскинуть мозгами, чтобы не нарушать уровни абстракции. В основном всё решается использованием Interaction.Triggers или Interaction.Behaviors. И MVVM остаётся чистеньким.
1
|
24.04.2018, 10:35 | |
24.04.2018, 10:35 | |
Помогаю со студенческими работами здесь
20
архитектура процессоров и компьютерная архитектура,Intel32. для первокурсников Время простоя в статус баре в многооконном текстовом редакторе Ошибка "в указанном dsn архитектура драйвера и архитектура приложения" Код который работает в консольном приложении в приложении Windows Forms выдает ошибку Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи | |||||
Как проводить научные вычисления на Python
InfoMaster 15.01.2025
Python стал одним из наиболее востребованных языков программирования в области научных вычислений благодаря своей простоте, гибкости и обширной экосистеме специализированных библиотек. Научные. . .
|
Создание игры типа Minecraft на PyGame/Python: пошаговое руководство
InfoMaster 15.01.2025
В данном руководстве мы рассмотрим процесс создания игры в стиле Minecraft с использованием библиотеки PyGame на языке программирования Python. Этот проект идеально подходит как для начинающих. . .
|
Как создать свою первую игру в стиле Doom на Unreal Engine
InfoMaster 15.01.2025
Разработка шутера от первого лица в стиле классического Doom представляет собой увлекательное путешествие в мир игрового программирования, где сочетаются творческий подход и технические навыки. . . .
|
Параллельное программирование: основные технологии и принципы
InfoMaster 15.01.2025
Введение в параллельное программирование
Параллельное программирование представляет собой фундаментальный подход к разработке программного обеспечения, который позволяет одновременно выполнять. . .
|
Как написать микросервис на C# с Kafka, MediatR, Redis и GitLab CI/CD
InfoMaster 15.01.2025
В современной разработке программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот подход позволяет разделить сложную систему. . .
|
Что такое CQRS и как это реализовать на C# с MediatR
InfoMaster 15.01.2025
Концепция CQRS и её роль в современной разработке
В современном мире разработки программного обеспечения архитектурные паттерны играют ключевую роль в создании масштабируемых и поддерживаемых. . .
|
Как настроить CI/CD с Azure DevOps
InfoMaster 15.01.2025
CI/ CD, или непрерывная интеграция и непрерывное развертывание, представляет собой современный подход к разработке программного обеспечения, который позволяет автоматизировать и оптимизировать процесс. . .
|
Как настроить CI/CD с помощью Jenkins
InfoMaster 15.01.2025
Введение в CI/ CD и Jenkins
В современной разработке программного обеспечения непрерывная интеграция (CI) и непрерывная доставка (CD) стали неотъемлемыми элементами процесса создания качественных. . .
|
Как написать микросервис на Go/Golang с Kafka, REST и GitHub CI/CD
InfoMaster 14.01.2025
Определение микросервиса, преимущества использования Go/ Golang
Микросервис – это архитектурный подход к разработке программного обеспечения, при котором приложение состоит из небольших, независимо. . .
|
Как написать микросервис с нуля на C# с RabbitMQ, CQRS, Swagger и CI/CD
InfoMaster 14.01.2025
В современном мире разработки программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот архитектурный подход предполагает. . .
|
Как создать интернет-магазин на PHP и JavaScript
InfoMaster 14.01.2025
В современном мире электронная коммерция стала неотъемлемой частью бизнеса. Создание собственного интернет-магазина открывает широкие возможности для предпринимателей, позволяя достичь большей. . .
|
Как написать Тетрис на Ассемблере
InfoMaster 14.01.2025
Тетрис – одна из самых узнаваемых и популярных компьютерных игр, созданная в 1984 году советским программистом Алексеем Пажитновым. За прошедшие десятилетия она завоевала симпатии миллионы людей по. . .
|