powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / MVVM Framework. Кто какой использует?
25 сообщений из 236, страница 4 из 10
MVVM Framework. Кто какой использует?
    #37003369
Proga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и второе, Денис, тебе не кажется, что это перебор строить такие конструкции вокруг двух контролов валидации?
Если же это академический пример то согласен, сносно, но если так пишутся приложения.....?! Кхм...
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37003372
Denis Gladkikh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ProgaDenis Gladkikhпропущено...

Я тоже как-то писал вариант с люмбдами тут http://outcoldman.ru/ru/blog/show/250

денис, так и должно быть в последнем примере у вас в статье
Да, я это уже видел. Там нужно просто проверку совпадения паролей прикрутить к обоим контролам. а не только ко второму (что логично, так как оба влияют на валидацию).
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37003375
Denis Gladkikh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Progaи второе, Денис, тебе не кажется, что это перебор строить такие конструкции вокруг двух контролов валидации?
Если же это академический пример то согласен, сносно, но если так пишутся приложения.....?! Кхм...
Не понял, про какие конструкции идет речь? Что-то избыточное?
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37003380
Proga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis GladkikhProgaи второе, Денис, тебе не кажется, что это перебор строить такие конструкции вокруг двух контролов валидации?
Если же это академический пример то согласен, сносно, но если так пишутся приложения.....?! Кхм...
Не понял, про какие конструкции идет речь? Что-то избыточное?
дело не в избыточности, а в самом подходе, вы действительно применяете такие подходы для валидации 2 контролов. А если их пару сотен на форме тоже будете писать так валидацию?

Или принципиально не пользуетесь проверкой валидности сервером?
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37003382
Proga
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Причем я имею ввиду проверку любой валидности, не только совпадение значений, как в вашем примере, а вообще. Для вашего случая, я согласен, сервер не нужен, я же интересуюсь о проверки любой валидности.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37003399
Denis Gladkikh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ProgaПричем я имею ввиду проверку любой валидности, не только совпадение значений, как в вашем примере, а вообще. Для вашего случая, я согласен, сервер не нужен, я же интересуюсь о проверки любой валидности.
Не пойму к чему клоните? А вы что не используете для этого валидаторы? Да, я все валидирую как на клиенте так и на сервере. Прикрутить несколько аттрибутов в простом случае, либо написать метод в сложном случае - не вижу проблемы.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37003464
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
Denis GladkikhLRпропущено...

хм...звучит интригующе, но вообразить крайне трудно...
в SL вроде нет байдинга к DynamicObject, а вот в WPF вроде есть.

Да в SL нужно извращаться или через индексируемые свойства, или конвертеры
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37003475
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
[Display(Name = "New password confirmation")]
public string NewPasswordConfirmation
{    get { return _newPasswordConfirmation; }   
 set    {        _newPasswordConfirmation = value;      
  OnPropertyChanged("NewPasswordConfirmation");        
 _validationHandler.ValidateRule("NewPasswordConfirmation", "Password confirmation not equal to password.",                                       
 () => string.CompareOrdinal(_newPassword, value) ==  0 );         ChangePasswordCommand.RaiseCanExecuteChanged();    
}}

Денис, у меня тоже вопросы. Как при таком подходе можно использовать кодогенераторы или другие тулзы для моделирования? Правил может быть много.
Если сделать общий вариант а'la ValidateRules("PropertyName") и предоставить интерфейс с необходимыми методами,то можно задавать правила отдельно, делать их асинхронными и зависимыми от других свойств, использовать сторонние валидаторы и тд
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37003611
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iСамый простой, короткий и универсальный - базовый класс с наследованием от DynamicObject
iДа в SL нужно извращаться или через индексируемые свойства, или конвертеры

Сева, нужны еще комментарии того, что ты певец оперного театра?
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37003621
Denis Gladkikh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
i
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
[Display(Name = "New password confirmation")]
public string NewPasswordConfirmation
{    get { return _newPasswordConfirmation; }   
 set    {        _newPasswordConfirmation = value;      
  OnPropertyChanged("NewPasswordConfirmation");        
 _validationHandler.ValidateRule("NewPasswordConfirmation", "Password confirmation not equal to password.",                                       
 () => string.CompareOrdinal(_newPassword, value) ==  0 );         ChangePasswordCommand.RaiseCanExecuteChanged();    
}}

Денис, у меня тоже вопросы. Как при таком подходе можно использовать кодогенераторы или другие тулзы для моделирования? Правил может быть много.
Если сделать общий вариант а'la ValidateRules("PropertyName") и предоставить интерфейс с необходимыми методами,то можно задавать правила отдельно, делать их асинхронными и зависимыми от других свойств, использовать сторонние валидаторы и тд

Я не понимаю к чему вы клоните. Я не использую кодогенераторы. Но, захотите использовать, то я проблем не вижу, не больше чем в других подходах.

"можно задавать правила отдельно" - можно задавать правила отдельно, более того я так и делаю
"делать их асинхронными" - можно делать и так, в чем проблема?
"зависимыми от других свойств" - ну отлично, один из примеров это показывает, сравниваем два поля.
"использовать сторонние валидаторы" - а тут какие проблемы? конечно можно использовать
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37003646
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
Denis GladkikhЯ не понимаю к чему вы клоните. Я не использую кодогенераторы. Но, захотите использовать, то я проблем не вижу, не больше чем в других подходах.

"можно задавать правила отдельно" - можно задавать правила отдельно, более того я так и делаю


На мой скромный взгляд, правила не можно, а нужно задавать только отдельно. Иначе при повторной генерации модели они исчезнут
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37003665
Denis Gladkikh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iDenis GladkikhЯ не понимаю к чему вы клоните. Я не использую кодогенераторы. Но, захотите использовать, то я проблем не вижу, не больше чем в других подходах.

"можно задавать правила отдельно" - можно задавать правила отдельно, более того я так и делаю


На мой скромный взгляд, правила не можно, а нужно задавать только отдельно. Иначе при повторной генерации модели они исчезнут

Что? О генерации какой модели идет речь? Правила описываются во ViewModel/PresentationModel, а не в модели.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37003691
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
Denis Gladkikhiпропущено...


На мой скромный взгляд, правила не можно, а нужно задавать только отдельно. Иначе при повторной генерации модели они исчезнут

Что? О генерации какой модели идет речь? Правила описываются во ViewModel/PresentationModel, а не в модели.

Понятно. Каким образом? При решении в лоб, Presenter превращается в wrapper модели, получается слишком многословно, его обязательно нужно создавать(обобщенного варианта не будет).
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37003708
Denis Gladkikh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iDenis Gladkikhпропущено...


Что? О генерации какой модели идет речь? Правила описываются во ViewModel/PresentationModel, а не в модели.

Понятно. Каким образом? При решении в лоб, Presenter превращается в wrapper модели, получается слишком многословно, его обязательно нужно создавать(обобщенного варианта не будет).

Честно, мне сложно с вами разговаривать, вы скачете от вопроса к вопросу, не давая разобраться в сути вопроса. Правильно ли я понимаю, что вы говорите о том, чтобы осуществлять байдинг сразу к моделям, которые генерирует EF/Linq-To-SQL/WCFServices (нужное подчеркнуть), а Presenter/ViewModel должен просто тупо возвращать этот объект? Сразу скажу, что подход просто нереально ужасный, разрабатывая так руководствуются только ленью.
По вашему принципу View это тоже wrapper над Моделью.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37003847
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
Denis Gladkikhiпропущено...


Понятно. Каким образом? При решении в лоб, Presenter превращается в wrapper модели, получается слишком многословно, его обязательно нужно создавать(обобщенного варианта не будет).

Честно, мне сложно с вами разговаривать, вы скачете от вопроса к вопросу, не давая разобраться в сути вопроса. Правильно ли я понимаю, что вы говорите о том, чтобы осуществлять байдинг сразу к моделям, которые генерирует EF/Linq-To-SQL/WCFServices (нужное подчеркнуть), а Presenter/ViewModel должен просто тупо возвращать этот объект? Сразу скажу, что подход просто нереально ужасный, разрабатывая так руководствуются только ленью.
По вашему принципу View это тоже wrapper над Моделью.

Да, я подразумеваю именно самый простой и тупой вариант, когда Presenter/ViewModel имеют только Model, а не его свойства. Хороший программист - ленивый программист, кода так значительно мешьше. Чем нереально ужасен вариант такой вариант?

ЗЫ Просьба без лишних эмоций, не будем уподобляться MCУ. Я не вижу в варианте валидации в Presenter/ViewModel простых решений без лишних телодвижений, посему и спрашиваю
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37003872
Denis Gladkikh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
iDenis Gladkikhпропущено...


Честно, мне сложно с вами разговаривать, вы скачете от вопроса к вопросу, не давая разобраться в сути вопроса. Правильно ли я понимаю, что вы говорите о том, чтобы осуществлять байдинг сразу к моделям, которые генерирует EF/Linq-To-SQL/WCFServices (нужное подчеркнуть), а Presenter/ViewModel должен просто тупо возвращать этот объект? Сразу скажу, что подход просто нереально ужасный, разрабатывая так руководствуются только ленью.
По вашему принципу View это тоже wrapper над Моделью.

Да, я подразумеваю именно самый простой и тупой вариант, когда Presenter/ViewModel имеют только Model, а не его свойства. Хороший программист - ленивый программист, кода так значительно мешьше. Чем нереально ужасен вариант такой вариант?

ЗЫ Просьба без лишних эмоций, не будем уподобляться MCУ. Я не вижу в варианте валидации в Presenter/ViewModel простых решений без лишних телодвижений, посему и спрашиваю

Проблемы будут разные. Сложнее поддерживать конструкцию, иногда не всегда можно будет осуществить байдинг именно на свойство модели, потому логика будет расплываться, что где-то будет осуществляться байдинг на модель, а где-то на свойство ViewModel.

Еще стандартный вариант. Есть список и есть контрол для редактирования сущности. Пользователь начинает редактировать сущность, а потом нажимает отмена (вместо сохранить), а в нашу модель уже записались все данные. Более того, когда пользователь начинает редактировать, то он уже видит изменения и в списке, что не очень-то хорошо. Получается, в таких случаях нужно делать копию объекта, а потом уметь обновлять основной объект из копии. Либо при отмене постоянно перегружать коллекцию.

В общем, я видел такой подход в одном из проектов. И могу сказать 100%, лучше я не поленюсь сейчас и сделаю с правильной архитектурой, а не буду мучиться потом со всякими мелкими проблемами.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37003888
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis GladkikhПолучается, в таких случаях нужно делать копию объекта, а потом уметь обновлять основной объект из копии. Либо при отмене постоянно перегружать коллекцию.
Я в таком случае использую свои отдельные свойства (на них и работает байдинг), на которые маппятся данные при инициализации модели.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37003893
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУпри инициализации вью-модели.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37003967
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
[quot Denis GladkikhПроблемы будут разные. Сложнее поддерживать конструкцию, иногда не всегда можно будет осуществить байдинг именно на свойство модели, потому логика будет расплываться, что где-то будет осуществляться байдинг на модель, а где-то на свойство ViewModel.

[/quot]

В варианте с базовым классом - DynamicObject таких проблем нет. Динамически добавляем нужные и все в одном месте.

Denis GladkikhЕще стандартный вариант. Есть список и есть контрол для редактирования сущности. Пользователь начинает редактировать сущность, а потом нажимает отмена (вместо сохранить), а в нашу модель уже записались все данные. Более того, когда пользователь начинает редактировать, то он уже видит изменения и в списке, что не очень-то хорошо. Получается, в таких случаях нужно делать копию объекта, а потом уметь обновлять основной объект из копии. Либо при отмене постоянно перегружать коллекцию.
В общем, я видел такой подход в одном из проектов. И могу сказать 100%, лучше я не поленюсь сейчас и сделаю с правильной архитектурой, а не буду мучиться потом со всякими мелкими проблемами

Если Undo\Redo реализовывать в Presenter, то это еще одно усложнение и так перегруженного варианта. Принципам единичной ответственности это не отвечает. Если модель предоставляет нужные интерфейсы(валидация, отмена), можно создать необходимый набор обобщенных базовых классов Presenter\ViewModel, тогда во многих случаях их ненужно будет задавать явно в коде и не мучиться с мелкими проблемами совсем
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37004267
Фотография LR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iDenis GladkikhПроблемы будут разные. Сложнее поддерживать конструкцию, иногда не всегда можно будет осуществить байдинг именно на свойство модели, потому логика будет расплываться, что где-то будет осуществляться байдинг на модель, а где-то на свойство ViewModel.

В варианте с базовым классом - DynamicObject таких проблем нет. Динамически добавляем нужные и все в одном месте.
Было бы интересно более подробно узнать об этом варианте (с DynamicObject), можете привести какой-нибудь конкретный (и показательный) пример?
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37004386
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
LRiпропущено...


В варианте с базовым классом - DynamicObject таких проблем нет. Динамически добавляем нужные и все в одном месте.
Было бы интересно более подробно узнать об этом варианте (с DynamicObject), можете привести какой-нибудь конкретный (и показательный) пример?

У меня все в комплексе, показывать отдельно DynamicObject будет непоказательно. Сделаю рефакторинг по результатам проекта, тогда, может, выложу на codeplex.
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37005481
Фотография i see
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так приходит слава :)
Всё же фильтруйте следите за лексикой, коллеги. Нас читает мир.

http://outcoldman.ru/ru/blog/show/261
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37005624
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
Вах!! Нашу палату №6 прописали в стенгазете ;-)

авторОтступление: Вообще, впечатления от форума sql.ru пока такие, что в любом треде начинается просто бестолковый флуд о том хорошо Silverlight или нет

Более внимательно перечитал аргументы против MVVM, еще больше они стали неочевидны.

авторВ большинстве случаев реализации MVVM паттерна модель представления имеет очень много причин для изменений. Если нам нужно на представлении поменять немного логику,

View(если я правильно понимаю, тяжело воспринимать русские аналоги, которых не существует за отсутствием литературы) в MVVM логики не имеет.

автор использовать другое связывание данных,

что под этим подразумевается совершенно непонятно
авторто, скорее всего, нужно будет менять и логику в модели представления. Если поменялась модель, то нужно менять за ней и модель представления.
совершенно не обязательно, если Model - отдельное свойство в ViewModel

автор Одни из самых важных принципов разработки – это «разделение ответственности» (Seperation of Concerns) и «принцип единственной ответственности» (Single Responsibility Principle). В случае модели представления эти принципы нарушены.

Данную проблему можно решить, вернувшись обратно к паттерну MVP с небольшими доработками. Основой этих доработок будет являться облегченная версия модели представления, описанной Мартином Фаулером.

статья Фаулера, на мой вгзляд, совершенно не к месту. Xaml позволяет иметь в таких случаях два отдельных MVVM без всякой взаимосвязи, что гораздо проще и внятней.

автор В данном случае эта модель представления возьмет на себя только задачу связывания данных, и в некоторых случаях их валидацию. В результате у нас будет презентатор, который будет выполнять действия по запросу пользователя, модель представления, которая будет связывать данные с представлением, само представление, а так же модель. Каждый компонент фокусируется на более специфичных задачах вместо охвата нескольких, что дает нам, например, преимущества в написании тестов. Данный подход не только делает код более читабельным и классы более сфокусированными,

В таком случае мы будем иметь только нарушение принципов.
Обычно в MVVM Моdel отвечает за валидацию, а VM за логику. Это и делает их более простыми и сфокусированными.

автортак же у нас появляется возможность использовать облегченную версию модели представления сразу на нескольких представлениях
VM совершенно не зависит от VIew, сооветственно последних может быть сколько угодно
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37005736
Denis Gladkikh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
i,

давайте не будем засорять "стенгазету", если действительно интересно про это поговорить напишите мне email и мы это обсудим ;)
...
Рейтинг: 0 / 0
MVVM Framework. Кто какой использует?
    #37005752
Фотография i see
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Denis Gladkikhi,

давайте не будем засорять "стенгазету", если действительно интересно про это поговорить напишите мне email и мы это обсудим ;)Денис, давайте уж здесь, зачем переводить в приват интересное обсуждение.
...
Рейтинг: 0 / 0
25 сообщений из 236, страница 4 из 10
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / MVVM Framework. Кто какой использует?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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