Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
 
Dark Byte
29 / 46 / 19
Регистрация: 23.10.2014
Сообщений: 1,001
Завершенные тесты: 2
1

Слишком много кода во ViewModel-и

14.05.2016, 10:17. Просмотров 401. Ответов 11
Метки mvvm (Все метки)

Нормально ли когда в одной VM под 300 строк, а в других в среднем до 50? Не представляю как их разнести, а читабельность страдает... Я правда стараюсь группировать в регионы код, но все таки... Там у меня просто выходит что почти для всех форм используется одна MainViewModel.

Добавлено через 2 минуты
Еще вариант подумываю просто сделать эту MainViewModel partial и разнести в разные файлы по частям. Не знаю делают ли так...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.05.2016, 10:17
Ответы с готовыми решениями:

Как установить DataGrid.ItemsSource из кода ViewModel in mvvm?
Уважаемые Guru! Во viewModel, wich is DataContext to UserControl, код...

Mvvm ViewModel в ViewModel
Есть одно окошко там много вкладок, в каждой вкладке есть подвкладки и там...

Много кода про создании интерфейса
Добренького тебе дня читать. Вот сижу я и делаю интерфейс при помощи...

Множество ViewModel
Есть у меня 3 основных UserControl-а, во всех их содержится ещё кучка...

Десериализация ViewModel
Добрый день. Подскажите, возможно ли выполнить десериализацию ViewModel для...

11
Casper-SC
Эксперт .NET
3620 / 1829 / 355
Регистрация: 27.03.2010
Сообщений: 5,141
Записей в блоге: 1
14.05.2016, 10:38 2
На каждое окно своя вью модель. Почему не сделать так?
0
Dark Byte
29 / 46 / 19
Регистрация: 23.10.2014
Сообщений: 1,001
Завершенные тесты: 2
14.05.2016, 10:43  [ТС] 3
Цитата Сообщение от Casper-SC Посмотреть сообщение
На каждое окно своя вью модель. Почему не сделать так?
Потому что так логически не получается. Откуда эти ViewModel-и получат информацию? Вот я пишу чат. У меня есть окно авторизации, окно запуска сервера, окно самого чата и админское окно для действий над юзерами. Но фактически сервис создается в одной ViewModel-и и никуда он оттуда не денется. Как его передашь в другие ViewModel-и (да и зачем заморачиваться?)

Добавлено через 2 минуты
Отдельные же ViewModel-и у меня просто содержат данные которые биндятся к коллекциям. Всякие там UserViewModel, ChatViewModel, MessageViewModel...
0
Casper-SC
Эксперт .NET
3620 / 1829 / 355
Регистрация: 27.03.2010
Сообщений: 5,141
Записей в блоге: 1
14.05.2016, 10:52 4
Цитата Сообщение от Dark Byte Посмотреть сообщение
Потому что так логически не получается. Откуда эти ViewModel-и получат информацию?
Не видя кода сложно увидеть конкретно эту проблему.

Грубо говоря есть некая служба (класс), который неохота передавать в другие вью модели?

Зачем заморачиваться разнесением в разные вью модели говоришь? А зачем тогда эта тема?

Сделай обёртку над службой, то есть интерфейс и класс, в каждую вью модель передавай интерфейс, так ты не завяжешь жёстко во всех вью моделях одну реализацию службы и не будешь вызывать методы службы напрямую из вью модели. То есть в Composition Root (корневом месте проекта, где разрешаются все зависимости, подставляются реализации интерфейсов) ты подставляешь реализацию службы, а далее через интерфейс везде её используешь.

Добавлено через 1 минуту
Главная вью модель, возможно, содержит в себе ссылки на другие вью модели.
0
Dark Byte
29 / 46 / 19
Регистрация: 23.10.2014
Сообщений: 1,001
Завершенные тесты: 2
14.05.2016, 10:58  [ТС] 5
Casper-SC, какой еще нафиг интерфейс? Я вообще не понимаю о чем вы... Интерфейсу тоже нужна ссылка на объект. Да и откуда главной ViewModel-и взять ссылки на другие ViewModel-и?
0
Casper-SC
Эксперт .NET
3620 / 1829 / 355
Регистрация: 27.03.2010
Сообщений: 5,141
Записей в блоге: 1
14.05.2016, 11:04 6
Dark Byte, интересно, как ты с такими познаниями смог написать чат?

interface знакомо?

Добавлено через 43 секунды
Цитата Сообщение от Dark Byte Посмотреть сообщение
Да и откуда главной ViewModel-и взять ссылки на другие ViewModel-и?
Тут уже надо видеть реализацию. А так обычно через конструктор передают. Правда это даже и не нужно.
0
Ev_Hyper
Заблокирован
14.05.2016, 12:32 7
Dark Byte, еще один вариант - использовать статические классы / методы.
0
skilllab
210 / 184 / 50
Регистрация: 03.02.2011
Сообщений: 1,779
Записей в блоге: 1
Завершенные тесты: 1
14.05.2016, 12:50 8
Цитата Сообщение от Ev_Hyper Посмотреть сообщение
использовать статические классы
Вот я как то сделал один большущий проект с этими классами. Потом неделю искал где баговое значение в свойство пишется.
Вот правильный путь:
Цитата Сообщение от Casper-SC Посмотреть сообщение
На каждое окно своя вью модель.
0
Ev_Hyper
Заблокирован
14.05.2016, 12:55 9
skilllab, подождите, вы не с тем спорите. Вопрос о передаче информации между ViewModel. То, что на каждое окно своя ViewModel само самой подразумевается. Даже у одного окна может быть несколько ViewModel.
0
skilllab
210 / 184 / 50
Регистрация: 03.02.2011
Сообщений: 1,779
Записей в блоге: 1
Завершенные тесты: 1
14.05.2016, 19:50 10
Цитата Сообщение от Ev_Hyper Посмотреть сообщение
Вопрос о передаче
Я это к чему: что в один прекрасный майский день у топикстартера словится какой-нибудь настолько хитрый exeption, что аж гроза за окном пойдёт. Эта ж ViewModel и данные все у него обрабатывает, и с кучей View взаимодействует.
Цитата Сообщение от Dark Byte Посмотреть сообщение
в одной VM под 300 строк
Вот в том своём проекте я аж 1690 понаписал. И вообще не горжусь теперь собой
Думаю, (как мне так и вам) нужно логически весь код разнести. Т.е. регионы превратить в классы (естественно не те которые Properties).

Добавлено через 2 минуты
Цитата Сообщение от Dark Byte Посмотреть сообщение
просто выходит что почти для всех форм используется одна MainViewModel
Это НЕ верно. В том смысле что криво. Сделайте сервисный класс, который и будет в себе обрабатывать всю информацию. А при создании ViewModel инициализируйте его. При создании другой - передавайте ссылку.
0
golubyatnikovtv
176 / 176 / 95
Регистрация: 30.04.2016
Сообщений: 478
Завершенные тесты: 3
15.05.2016, 22:26 11
Цитата Сообщение от Ev_Hyper Посмотреть сообщение
То, что на каждое окно своя ViewModel само самой подразумевается
Совершенно не само собой, к одному VM вполне нормально делать несколько View.

Без понимания задачи "правильный" подход не найти.
0
Ev_Hyper
Заблокирован
15.05.2016, 23:57 12
Цитата Сообщение от golubyatnikovtv Посмотреть сообщение
Совершенно не само собой, к одному VM вполне нормально делать несколько View.
golubyatnikovtv, а пример можно увидеть7 Как-то вот не сталкивался с подобным.
0
15.05.2016, 23:57
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.05.2016, 23:57

ViewModel и UserControl
Добрый день. Помогить немного разобрать, а то мне кажется, что я сам себя уже...

MVVM и свойство из ViewModel
не могу понять где хранятся объекты из ViewModel есть класс с СМСками...

Model или ViewModel?
Скажите пожалуйста если класс не используется в качестве DataContext-а ни в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru