|
Проблемы с иерархическими моделями представлений
|
|||
---|---|---|---|
#18+
Алексей Кuser7320вдогонку: По сути, предлагается завести под логику в ICommand-ах отдельную ViewModel, если разместить это в code-behind религия не позволяет. Зачем заводить два файла с кодом вместо одного?Где кто писал про "файл"? А у тебя "отдельную ViewModel" и code-behind в одном файле находятся? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2014, 16:20 |
|
Проблемы с иерархическими моделями представлений
|
|||
---|---|---|---|
#18+
user7320Наверное, вас смутило слово "иерархические". Но в примере в первом посте видно, что у меня не дерево. Иерархия заключается во включении - т. е. одна модель представления является полем или свойством в другой модели представления. Вот в чём вопрос. У тебя каша в голове. Вью модель одна для одного представления, никакой вложенности других вью моделей не должно быть. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2014, 16:33 |
|
Проблемы с иерархическими моделями представлений
|
|||
---|---|---|---|
#18+
А не composite ли это application ? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2014, 16:42 |
|
Проблемы с иерархическими моделями представлений
|
|||
---|---|---|---|
#18+
мсущкоuser7320Наверное, вас смутило слово "иерархические". Но в примере в первом посте видно, что у меня не дерево. Иерархия заключается во включении - т. е. одна модель представления является полем или свойством в другой модели представления. Вот в чём вопрос. У тебя каша в голове. Вью модель одна для одного представления, никакой вложенности других вью моделей не должно быть. Если будет вложенность, то можно в представлении делать так (грубо без деталей): Код: xml 1. 2. 3. 4. 5. 6. 7. 8.
И для каждой VM есть свой DataTemplate. В результате ты юзер конотролы можешь собирать из одних контент презентеров. А внутри этих DataTemplate ещё свои ContentPresenter, которые тоже байндятся к моделям представления, для которых тоже есть свои DataTemplate. По-моему, всё просто. А если по-твоему и "Вью модель одна для одного представления, никакой вложенности других вью моделей не должно быть", то придётся на мою модель, которая состоит из других моделей, делать вью модель, которая будет содержать в себе ВСЕ СВОЙСТВА всех составляющих её моделей. Т. е. так: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2014, 16:49 |
|
Проблемы с иерархическими моделями представлений
|
|||
---|---|---|---|
#18+
user7320Если будет вложенность, то можно в представлении делать так (грубо без деталей) Нет. Представление не должно отруливать алгоритмом выбора вью модели. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2014, 16:56 |
|
Проблемы с иерархическими моделями представлений
|
|||
---|---|---|---|
#18+
user7320 Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
А зачем вообще вот этот код? С какой целью подменять viewmodel на ходу, причем использовать состоние привязанной к ней модели в качестве значения? ViewModel это ж фактически valueconverter для сложного типа. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2014, 17:09 |
|
Проблемы с иерархическими моделями представлений
|
|||
---|---|---|---|
#18+
WebSharperuser7320 Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
А зачем вообще вот этот код? С какой целью подменять viewmodel на ходу, причем использовать состоние привязанной к ней модели в качестве значения? ViewModel это ж фактически valueconverter для сложного типа. Это вообще клинический бред. Тут даже нечего комментировать. Вью модели должен накидывать либо отдельный сервис, либо сервис-локатор (в этом случае вью модель указывается прямо в замле). ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2014, 17:18 |
|
Проблемы с иерархическими моделями представлений
|
|||
---|---|---|---|
#18+
мсущкоuser7320Наверное, вас смутило слово "иерархические". Но в примере в первом посте видно, что у меня не дерево. Иерархия заключается во включении - т. е. одна модель представления является полем или свойством в другой модели представления. Вот в чём вопрос. У тебя каша в голове. Вью модель одна для одного представления , никакой вложенности других вью моделей не должно быть.Выделил на всякий, вдруг не заметит... user7320, ну ты если мне не веришь, ну МСУ то можно верить. Или тоже нельзя? Тут можно изъепнуться, и таки построить иерархию вьюмоделей аналогичную иерархии моделей, но зачем плодить бесполезный код? Его и без тебя на планете хватает. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2014, 17:52 |
|
Проблемы с иерархическими моделями представлений
|
|||
---|---|---|---|
#18+
Алексей КТут можно изъепнуться, и таки построить иерархию вьюмоделей Когда я читаю user7320, у меня иногда возникает мысль, что он просто парень-рубаха: пишет код чисто для самозаёба. Это нормально :) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2014, 18:26 |
|
Проблемы с иерархическими моделями представлений
|
|||
---|---|---|---|
#18+
WebSharperА зачем вообще вот этот код? С какой целью подменять viewmodel на ходу, причем использовать состоние привязанной к ней модели в качестве значения? ViewModel это ж фактически valueconverter для сложного типа. Алексей КмсущкоУ тебя каша в голове. Вью модель одна для одного представления , никакой вложенности других вью моделей не должно быть.Выделил на всякий, вдруг не заметит... user7320, ну ты если мне не веришь, ну МСУ то можно верить. Или тоже нельзя? Тут можно изъепнуться, и таки построить иерархию вьюмоделей аналогичную иерархии моделей, но зачем плодить бесполезный код? Его и без тебя на планете хватает. Модель представляет из себя композицию включением других моделей: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Как сделать ВМ для Model2, чтобы можно было редактировать её свойства? Т. е. на свойство Ma должна в сеттер прилетать модель Model1. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2014, 19:46 |
|
Проблемы с иерархическими моделями представлений
|
|||
---|---|---|---|
#18+
user7320Модель представляет из себя композицию включением других моделей. Ты определись, модель или вью модель. В кучу смешалось всё, люди, кони... user7320Как сделать ВМ для Model2... Остановись. Нельзя сделать вью модель для модели. Можно наоборот - вью модель может ссылаться на n моделей. Читай про mvvm, доколе будешь тупит-то? Вью модель делается для представления и только для него. P.S. Изучи вот этот рецепт , там я разжевываю по полочкам, как и что должно быть. Всё. Больше ничего другого выдумывать не нужно. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2014, 20:13 |
|
Проблемы с иерархическими моделями представлений
|
|||
---|---|---|---|
#18+
Ребята, вмето того что бы штудировать "Фаулеров" и иже с ним, почитайте лучше "совковые" книги по системному анализу и по системотехнике, в ангоязычной литературе это называется - системная инженерия. Именено там изложенны базовые принципы постоения систем, которые имеют практическую ценность. Все "фаулеровские выкладки", паттерны и прочая муть, это частные случаи систмной инженерии! Количество звеньев(слоев), так или иначе коррелирует с теорией надежности, хотя на первый взгляд это не очевидно. Что из этого следует? Всем нам, что бы прикрывать яйца от мороза, нужно носить штаны, но штаны не долговечны, имеют особенность терять эстетический вид, загрязняться, рваться и т.д. Что бы избежать неурядиц, нужно иметь запасные штаны, это называется - дублирование. Собственно вопрос - почему не завести себе 100 штанов? Дело в том, что как показывает практика, будь у Вас 100 штанов, носить Вы будете все равно - трое четверо, пятые уже будут лишними! И это математически подтверждено - максимум может быть оправдано четырехкратное дублирование! Есть конечно исключения, если Вы Филипп Киркоров, то одевать каждый день новые штаны это часть Вашего имиджа, это Ваш заработок, но в обыденной жизни такой подход не катит. Теперь ближе к теме. При постоении ситемы, максимум должно быть ЧЕТЫРЕ абстрогируемых звена. Если строим клиент-серверную систему, работающую через веб-сервисы, то уже изначально имеем 2 слоя - уровень СУБД и слой веб-сервисов. Соответственно, если в клиентском приложении Вы начнете изобретать больше двух слоев, то эффективность такой реализации начнет зезко падать! Если Ваше приложение имеет непосредственный доступ к СУБД, то реализация трех слоев вполне может быть оправдана. Теперь ближе к программированию. Не даром конструктор в студии при ператаскивании данных из источника создает источники биндинга в ресурсах. И почему-то в проекте создается класс App откуда все и стартует и от куда можно делать все биндинги! Это своего рода реализация синглтона. Это абсолютно с точки зрения системной инженерии правильно! Есть нейкий сингл в приложени вокруг которого создается некая логическая обвязка. Т.е. в два звена можно все вложить, с доступом к СУБД приделываем третье звено в виде ОРМ, дао и иже с ними, зачем еще что-то лепить? Инженеры в M$ это видимо прейрасно понимают, а разработчики поверх готового велосипеда всеми силами стараются прилепить еще один велосипед! Все сказанное - имхо неоднократно подтвержденное на практике. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2014, 20:20 |
|
Проблемы с иерархическими моделями представлений
|
|||
---|---|---|---|
#18+
James Bond FRКоличество звеньев(слоев), так или иначе коррелирует с теорией надежности... Теперь ближе к теме. При постоении ситемы, максимум должно быть ЧЕТЫРЕ абстрогируемых звена... Если строим клиент-серверную систему, работающую через веб-сервисы, то уже изначально имеем 2 слоя - уровень СУБД и слой веб-сервисов.... Соответственно, если в клиентском приложении Вы начнете изобретать больше двух слоев, то эффективность такой реализации начнет зезко падать... Тебе бы самому книжек почитать. Особенно на тему отличия уровня (звена, tier) и слоя (layer). Когда придет просветвление, приходи сюда, объяснишь нам, как нужно писать код. P.S. На будущее. Если мы строим клиент-серверную систему, работающую через веб-сервисы, это 3-уровневая архитектура (клиент, сервер приложений и БД). Покури вот этот мануал, пора взрослеть http://codearticles.ru/articles/1522 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2014, 20:30 |
|
Проблемы с иерархическими моделями представлений
|
|||
---|---|---|---|
#18+
Мдя, с Вами коллега комунизьм еще долго бутем строить. Спасибо что заставили почувствовать себя молодым, но из Ваших ресурсов, первое что попалось: С чего бы выделенно именно ЧЕТЫРЕ абстрогируемых звена? И каких? Я угадал? Или пойдете может лучше книги заросшие пылью политаете? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2014, 20:51 |
|
Проблемы с иерархическими моделями представлений
|
|||
---|---|---|---|
#18+
James Bond FRМдя, с Вами коллега комунизьм еще долго бутем строить. Спасибо что заставили почувствовать себя молодым, но из Ваших ресурсов, первое что попалось: С чего бы выделенно именно ЧЕТЫРЕ абстрогируемых звена? И каких? Я угадал? Или пойдете может лучше книги заросшие пылью политаете? James Bond FRМдя, с Вами коллега комунизьм еще долго бутем строить. Спасибо что заставили почувствовать себя молодым, но из Ваших ресурсов, первое что попалось: С чего бы выделенно именно ЧЕТЫРЕ абстрогируемых звена? И каких? Я угадал? Или пойдете может лучше книги заросшие пылью политаете? Тут речь не о звене (tier), а о слое (layer). Опять мимо, коллега :) P.S. Пока не поймешь разницу между tier и layer, разговора у нас никак не получится. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2014, 20:57 |
|
Проблемы с иерархическими моделями представлений
|
|||
---|---|---|---|
#18+
James Bond FR, N-уровневая / 3-уровневая архитектураПримером N-уровневого/3-уровневого архитектурного стиля может служить типовое финансовое Веб-приложение с высокими требованиями к безопасности. Бизнес-слой в этом случае должен быть развернут за межсетевым экраном, из-за чего приходится развертывать слой представления на отдельном сервере в пограничной сети. Другой пример – типовой насыщенный клиент, в котором слой представления развернут на клиентских компьютерах, а бизнес-слой и слой доступа к данным развернуты на одном или более серверных уровнях. Так что опять двойка ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2014, 21:00 |
|
Проблемы с иерархическими моделями представлений
|
|||
---|---|---|---|
#18+
мсущкоТут речь не о звене (tier), а о слое (layer). Опять мимо, коллега :) P.S. Пока не поймешь разницу между tier и layer, разговора у нас никак не получится. Хорошо коллега, раз уж решили начать с понятий - так и поступим. При проектировании выделяют три этапа: 1. Проетирование функциоанльной схемы. 2. Поточной. 3. Структурной схемы. По Вашему мнению, какая схама отображена? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2014, 21:10 |
|
Проблемы с иерархическими моделями представлений
|
|||
---|---|---|---|
#18+
мсущкоuser7320Модель представляет из себя композицию включением других моделей. Ты определись, модель или вью модель. В кучу смешалось всё, люди, кони... user7320Как сделать ВМ для Model2... Остановись. Нельзя сделать вью модель для модели. Можно наоборот - вью модель может ссылаться на n моделей. Читай про mvvm, доколе будешь тупит-то? Вью модель делается для представления и только для него. Что это значит? Что я должен сначала придумать представление, а потом писать для него вью-модель? Тогда покажите, как бы вы сделали вью-модель для моего варианта , когда представление представляет собой отображение модели Model4, свойство которой Model3 M3 можно изменить, прислав на это свойство другую Model3. Обычное обновление поля модели, ничего сложного. мсущкоP.S. Изучи вот этот рецепт , там я разжевываю по полочкам, как и что должно быть. Всё. Больше ничего другого выдумывать не нужно. Там только пример программы без комментариев. Это всё? Я там увидел дерево - это я уже разобрал. Ещё там есть грид с сотрудниками и возможностью их редактировать-добавлять. Это я тоже знаю. Ваш пример только портит использование Юнити - нихрена не понятно, что это за контейнеры такие и сервисы. Фактически, ваш пример завязан на Юнити - надо сначала изучить Юнити, а потом ваш пример. Лучше бы без Юнити. автор Код: c# 1. 2. 3.
Это не по МВВМу, но я и сам до этого догадался. Это тоже мне всё знакомо. А это что за непотребство?! автор Код: c# 1. 2. 3. 4. 5. 6. 7.
Почему представление грида обновляется ручками, а не через обновление нижележащей коллеции и привязки? Это не просто не по МВВМу, а вообще какой-то говнокод, как сказал бы МСУ. Но это фактически то и есть, что я делаю - обновляю дважды (это моё "дублирование данных"). Сначала нижележащие данные в модели, а потом вью-модель (точнее, у меня наоборот по ссылке ниже): http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1092795&msg=15975182 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2014, 21:11 |
|
Проблемы с иерархическими моделями представлений
|
|||
---|---|---|---|
#18+
James Bond FRмсущкоТут речь не о звене (tier), а о слое (layer). Опять мимо, коллега :) P.S. Пока не поймешь разницу между tier и layer, разговора у нас никак не получится. Хорошо коллега, раз уж решили начать с понятий - так и поступим. При проектировании выделяют три этапа: 1. Проетирование функциоанльной схемы. 2. Поточной. 3. Структурной схемы. По Вашему мнению, какая схама отображена? Не ипи мне моск. Ты облажался с уровнями и слоями - если нет понимания что это такое (а его нет впринципе), о проектировании не может быть и речи. Сидеть с тобой надрачивать "понятия" у меня нет никакого желания, я этим занимаюсь тут на форуме с 2006 года. Если по делу есть что сказать - говори. Иначе в топку. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2014, 21:15 |
|
Проблемы с иерархическими моделями представлений
|
|||
---|---|---|---|
#18+
мсущкоJames Bond FRпропущено... Хорошо коллега, раз уж решили начать с понятий - так и поступим. При проектировании выделяют три этапа: 1. Проетирование функциоанльной схемы. 2. Поточной. 3. Структурной схемы. По Вашему мнению, какая схама отображена? Не ипи мне моск. Ты облажался с уровнями и слоями - если нет понимания что это такое (а его нет впринципе), о проектировании не может быть и речи. Сидеть с тобой надрачивать "понятия" у меня нет никакого желания, я этим занимаюсь тут на форуме с 2006 года. Если по делу есть что сказать - говори. Иначе в топку. Чтож коллега, как говорят - слив защитан! :) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2014, 21:18 |
|
Проблемы с иерархическими моделями представлений
|
|||
---|---|---|---|
#18+
James Bond FRЧтож коллега, как говорят - слив защитан! :) Если тебе будет так легче, я не против :) P.S. Проблема кроется глубже: у тебя понимания ранее не было и сейчас нет. И ты не хочешь даже понять это, это еще хуже. Так что лучше тихонечко изучи мануал, который я тебе дал, чтобы хоть в следующий раз так не обосраться. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2014, 21:21 |
|
Проблемы с иерархическими моделями представлений
|
|||
---|---|---|---|
#18+
user7320Что это значит? Что я должен сначала придумать представление, а потом писать для него вью-модель? Да как хочешь, так и придумывай. Суть остается сутью: есть вью и его личная вью модель. user7320Тогда покажите, как бы вы сделали вью-модель для моего варианта , когда представление представляет собой отображение модели Model4, свойство которой Model3 M3 можно изменить, прислав на это свойство другую Model3. Обычное обновление поля модели, ничего сложного. Тебе уже 100 раз разжевали, что и как нужно делать. Читать килобайты твоей шизофрении лень. И уж тем более что-то там делать за тебя. user7320Там только пример программы без комментариев. Это всё? Комментарии? А задницу салфеточкой не вытереть? )) user7320Ваш пример только портит использование Юнити - нихрена не понятно, что это за контейнеры такие и сервисы. Фактически, ваш пример завязан на Юнити - надо сначала изучить Юнити, а потом ваш пример. Лучше бы без Юнити. Да какая разница, какой DI контейнер использовать. Юнити или что-то еще. Ты суть улови, что тебе хотят донести по теме. user7320автор Код: c# 1. 2. 3.
Это не по МВВМу, но я и сам до этого догадался. Это тоже мне всё знакомо. Почему? Это нисколько не нарушает концепцию mvvm. user7320А это что за непотребство?! автор Код: c# 1. 2. 3. 4. 5. 6. 7.
Почему представление грида обновляется ручками, а не через обновление нижележащей коллеции и привязки? Это не просто не по МВВМу, а вообще какой-то говнокод, как сказал бы МСУ. Потому, чтобы ослабить связь представления и вью модели. Это ослабление делается через инжекцию в виде UI сервиса. Опять же, принцип MVVM не нарушен. Ты просто не дорос еще до этого "гавнокода". ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2014, 21:30 |
|
Проблемы с иерархическими моделями представлений
|
|||
---|---|---|---|
#18+
мсущкоПотому, чтобы ослабить связь представления и вью модели. Это ослабление делается через инжекцию в виде UI сервиса. Опять же, принцип MVVM не нарушен. Ты просто не дорос еще до этого "гавнокода". Что бы ослабить связь представления с вью-моделью мы лезем ручками в датагид? На кого рассчитан этот треш коллега? Я нисколько ни порицаю данный подход, но это явно не по MVVM-овски! ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2014, 21:48 |
|
Проблемы с иерархическими моделями представлений
|
|||
---|---|---|---|
#18+
James Bond FRмсущкоПотому, чтобы ослабить связь представления и вью модели. Это ослабление делается через инжекцию в виде UI сервиса. Опять же, принцип MVVM не нарушен. Ты просто не дорос еще до этого "гавнокода". Что бы ослабить связь представления с вью-моделью мы лезем ручками в датагид? На кого рассчитан этот треш коллега? Я нисколько ни порицаю данный подход, но это явно не по MVVM-овски! Я уже понял, что для тебя слово UI сервис пустой звук. Что бы ослабить связь представления с вью-моделью, мы создаём слой (layer). По слогам повтори "la-yer". По сути, что-то подобие контроллера в MVC, который скармливает модель во вью. P.S. Изучи ссылку, которую я дал выше. Если не осилишь, начни таки с азов слоёв и уровней. Цирк ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2014, 22:07 |
|
Проблемы с иерархическими моделями представлений
|
|||
---|---|---|---|
#18+
Вот еще альтернатива UI сервиса (View сервиса) http://msdn.microsoft.com/en-us/magazine/jj694937.aspx P.S. Но по мне такой способ несет больше геморроя, чем пользы. Да и противник я код бехайнда, иначе это уже не MVVM. P.S2. James Bond FR, в следующий раз, когда захочешь что-то умное сказать, 10 раз подумай. А то я уже со счета сбился, сколько раз ты уже тут налажал :) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2014, 22:11 |
|
|
start [/forum/topic.php?fid=21&msg=38633801&tid=1441125]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
97ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
others: | 298ms |
total: | 493ms |
0 / 0 |