powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / MVVM паттерн - зачем?
16 сообщений из 16, страница 1 из 1
MVVM паттерн - зачем?
    #38157523
Mans7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток. Уже 3-й день пытаюсь познакомиться с паттерном, именуемым как MVVM, но, как-то не понятно всё слишком. Чересчур даже. Скопипастенные примеры, конечно работают, но, как только, пытаешься применить паттерн к своим проектам, то всё рушится ещё до стадии тестирования. Вот несколько примеров (и вопросов):

1. Допустим у меня есть в представлении разметка, напоминающая "окно". Ну типа ChildWindow. И-так, при инициализации его я могу (и должен) указать значение Header'а - строчки в шапке. Вот это первый вопрос. Насколько я понял, нужно написать свойство зависимостей и привязать его к этой строчке в представлении ? Ибо иначе где - в ViewModel? Пробовал - тогда Intellisense не видит это свойство. А его нужно задать практически в момент создания окна.

2. Далее - допустим у меня есть несколько объектов основанных на MVVM паттерне (несколько окон). Как можно организовать взаимодействие между ними? Если весь код в Model и ViewModel находится. Допустим, передачу данных из одного в другой?

3. Я не понимаю чем так "прекрасен" этот паттерн? Слишком он сложный и закрытый. Прям утопия майкрософт. Даже пресловутый MessageBox и тот надо открывать через танцы с бубном, когда обычно нужно написать 1 строчку.

4. Далее - NotifyPropertyChanged - смысл? Ну при изменении значения свойства вызывается метод/евент который типа уведомляет. Уведомляет систему? Или кого? Где можно перехватить эти уведомления?

И ещё куча куча вопросов. Я не понимаю зачем вообще был он придуман, всё только сложнее становится. Причем многое, что можно использовать, вообще недоступным становится с MVVM. Объясните мне, глупому, зачем он нужен и как им пользоваться правильно? Прошу не кидать ссылки на блоги/книги/статьи - я уже очень много перечитал. И с каждым разом всё больше вопросов возникает....
...
Рейтинг: 0 / 0
MVVM паттерн - зачем?
    #38157580
Фотография Абсолют
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тут, как бы такое дело, интересное.

1. MVVM это не догма. Это подход. Это не значит, что нужно кидаться и сразу переходить на него.
2. "(несколько окон). Как можно организовать взаимодействие между ними?" -- это вы можете прояснить? Совсем не понял, для чего это.
3. "Даже пресловутый MessageBox" можно показать, только для этого нужно немного припариться внутрях. Есть разные методы и подходы к показу модальных диалогов - тема большая и отдельная.
4. "Далее - NotifyPropertyChanged - смысл?" - допустим, пример: селекнутый роу в гриде и проперти грид.
...
Рейтинг: 0 / 0
MVVM паттерн - зачем?
    #38157633
Mans7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за ответ!

1. Дело в том, что я очень часто видел эту аббревиатуру и воспринимал его как "MUST HAVE инструмент". Я не знаю (и очень хочу знать) - когда действительно MVVM необходима? Является ли его использование одним из "показателей" профессиональности (это уже гордыня ^_^ ).
2. У меня есть юзерконтрол выполненный в виде диалогового окна. Его можно перемещать, растягивать и прочее. А теперь представим что я сделал 2 (разных) экземпляра таких окон. Одно содержит таблицу, второе содержит текстовый редактор. Если мои "окна" выполнены через MVVM - я не представляю как можно:
а) обратиться от одного окна ко второму;
б) получить доступ к какому либо дочернему элементу окна (таблица или же текстовое поле).
Как-то так.
3. Ну тут да....
4. А вот тут я не понял. При объявлении свойства в нём в set указывается вызов NotifyChangedProperty("MyProperty"); (может и немножко не так пишется, но смысл ясен). Далее всё упирается в один созданный эвент
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
    /// <summary>
    /// Base ViewModel class
    /// </summary>
    public class ViewModelBase : IViewModelBase
    {
        /// <summary>
        /// Event handler
        /// </summary>
        public event PropertyChangedEventHandler PropertyChanged;

        /// <summary>
        /// NotifyPropertyChanged implementation
        /// </summary>
        public void NotifyPropertyChanged(String PropertyName)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(PropertyName));
            }

        }
    }


Всё упирается в эвент PropertyChanged . Но я не понимаю - как мне сказать программе "если изменилось свойство А, покажи мне MessageBox". Вот о чем я.

А каково Ваше мнение - в каких случаях НУЖНО применять MVVM? И вообще стоит ли все проекты под него переделывать (либо когда буду делать новый проект, затачивать его под MVVM)??
...
Рейтинг: 0 / 0
MVVM паттерн - зачем?
    #38157651
Mans7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Или, может, для решения моей задачи он просто не нужен , т.к. только сложнее всё будет? У меня бизнес-приложение, через которое можно читать и изменять данные из БД. Каждая таблица из БД представлена в виде таблицы GridView в своём личном самопаленным "окном".
...
Рейтинг: 0 / 0
MVVM паттерн - зачем?
    #38158228
Фотография Абсолют
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mans7,

mvvm может решить любую проблему. Просто нужно понимать, как её решить. Я не понял примера про окна. Зачем вам два окна, и зачем вам там связь?

По поводу примера роу и проперти грида: смысл этого интерфейса, что бы сказать морде, что что-то изменилось.
...
Рейтинг: 0 / 0
MVVM паттерн - зачем?
    #38158397
Фотография Местный король Делфей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: xml
1.
<BooleanToVisibilityConverter x:Key="boolToVisConverter" />



Код: xml
1.
<controls:MsgBox Visibility="{Binding Path=HasSomethingToSay, Mode=TwoWay, Converter={StaticResource boolToVisConverter}, UpdateSourceTrigger=PropertyChanged}" />
...
Рейтинг: 0 / 0
MVVM паттерн - зачем?
    #38158595
Nicky_N
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mans7,

почитайте букварь от Джоша Смита , медленно, вдумчиво, может несколько раз, вникните в детали, и много вопросов отпадут.
поверьте личному опыту) я не сразу одолел эту статью, где-то раза с третьего. Конечно просветления не достиг), но общее представление сформировал!
...
Рейтинг: 0 / 0
MVVM паттерн - зачем?
    #38159944
Mans7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо БОЛЬШОЕ за информацию, букварь в ближайшее время прочитаю (и вероятно не раз) и отпишу о результатах :).
...
Рейтинг: 0 / 0
MVVM паттерн - зачем?
    #38163106
Mans7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прочитал. Да, нужно будет ещё разок. Многое прояснилось... так, значит, MVVM это очень закрытая система... и, видимо, для реализации взаимодействия некоторых элементов, мне нужно делать всё приложение "от а до я" на MVVM. Спасибо, будем думать :)
...
Рейтинг: 0 / 0
MVVM паттерн - зачем?
    #38163174
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mans7Многое прояснилось... так, значит, MVVM это очень закрытая система... и, видимо, для реализации взаимодействия некоторых элементов, мне нужно делать всё приложение "от а до я" на MVVM.
Выше уже говорилось, что MVVM это не "очень закрытая система" и не "MUST HAVE инструмент", а "подход", "паттерн мышления". Это значит, что с таким подходом можно рассматривать любую, даже самую "анти-MVVM" систему с пользой для дела.

Но когда "подход", "паттерн мышления" пытаются возвести в догму практического применения, получается что-то иудейской субботы, отягощенной дилеммой, которую сформулировал в бытность свою Иисус. Одним словом, каждый решает сам для себя - "разработчик для MVVM" или "MVVM для разработчика".
...
Рейтинг: 0 / 0
MVVM паттерн - зачем?
    #38163482
gpu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АбсолютMans7,

mvvm может решить любую проблему.
Возможно. Но ненадо зацикливаться на mvvm. 90% проблем можно решать используя mvvm. Остальные использую прагматический подход>
"Будь проще и к тебе потянуться люди" (c)
...
Рейтинг: 0 / 0
MVVM паттерн - зачем?
    #38163517
Фотография Абсолют
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gpuАбсолютMans7,

mvvm может решить любую проблему.
Возможно. Но ненадо зацикливаться на mvvm. 90% проблем можно решать используя mvvm. Остальные использую прагматический подход>
"Будь проще и к тебе потянуться люди" (c)

Внимательно читайте мои комментарии.
...
Рейтинг: 0 / 0
MVVM паттерн - зачем?
    #38163528
gpu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Абсолютgpuпропущено...

Возможно. Но ненадо зацикливаться на mvvm. 90% проблем можно решать используя mvvm. Остальные использую прагматический подход>
"Будь проще и к тебе потянуться люди" (c)

Внимательно читайте мои комментарии.
Мне нравится етот>
mvvm может решить любую проблему.
...
Рейтинг: 0 / 0
MVVM паттерн - зачем?
    #38163540
Фотография Абсолют
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И что же в нем такого? Призыв применять его везде и вся?
...
Рейтинг: 0 / 0
MVVM паттерн - зачем?
    #38163568
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АбсолютИ что же в нем такого? Призыв применять его везде и вся?

Только в IT можно быть беременной, но не совсем, а только на 90%.

При наличии спец.контролов, расширений и прочей обвязки будут 100%. Если не умеете готовить, то не нужно делать сильных заявлений.
...
Рейтинг: 0 / 0
MVVM паттерн - зачем?
    #38163737
Фотография Абсолют
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaТолько в IT можно быть беременной, но не совсем, а только на 90%.

При наличии спец.контролов, расширений и прочей обвязки будут 100%. Если не умеете готовить, то не нужно делать сильных заявлений.
Эээ, ничего не попутали? Я тут не утверждал про 90%. Это gpu утверждает. :)
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / MVVM паттерн - зачем?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]