|
Проблемы с иерархическими моделями представлений
|
|||
---|---|---|---|
#18+
мсущкоПочему представление грида обновляется ручками, а не через обновление нижележащей коллеции и привязки? Это не просто не по МВВМу, а вообще какой-то говнокод, как сказал бы МСУ. Потому, чтобы ослабить связь представления и вью модели. Это ослабление делается через инжекцию в виде UI сервиса. Опять же, принцип MVVM не нарушен. Ты просто не дорос еще до этого "гавнокода". Т. е. нормальный МВВМ не сделать, если не применить при этом кучу высокоуровневых абстракций и толстолобых паттернов? МВВМ не заводится без кучи костылей? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2014, 04:53 |
|
Проблемы с иерархическими моделями представлений
|
|||
---|---|---|---|
#18+
мсущкоuser7320Что это значит? Что я должен сначала придумать представление, а потом писать для него вью-модель? Да как хочешь, так и придумывай. Суть остается сутью: есть вью и его личная вью модель. Я придумывал вью модели так: брал модель с думал, как она должна выглядеть в представлении. Делал под придуманное вью модель. Что не так? У меня такое ощущение, что вы привязались к словам - т. е. мы говорим об одном и том же, но разными словами. И это, по МВВМу, вью модель знает о модели. Поэтому логично, что она должна создаваться с оглядкой на модель. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2014, 05:08 |
|
Проблемы с иерархическими моделями представлений
|
|||
---|---|---|---|
#18+
мсущкоВот еще альтернатива UI сервиса (View сервиса) http://msdn.microsoft.com/en-us/magazine/jj694937.aspx P.S. Но по мне такой способ несет больше геморроя, чем пользы. Да и противник я код бехайнда, иначе это уже не MVVM. P.S2. James Bond FR, в следующий раз, когда захочешь что-то умное сказать, 10 раз подумай. А то я уже со счета сбился, сколько раз ты уже тут налажал :) Коллега, Вас уже два раза ткнули носом в Ваши косяки, но судя по всему Вы из тех людей, которые с пеной у рта готовы доказывать свою не правоту. Еще раз - в чем смысл MVVM да и любого паттерна в принципе? Разделяй и влавствуй! С этим надеюсь согласны? Идея MVVM да и WPF(Silverlight) в целом - дизайнер рисует UI, прогер кодит. В итоге дизайнер биндит контролы на сущности и все работает. С этим надеюсь тоже согласны? Что произойдет если дизайнер изменит имя employeesGrid на MyEmployeesGrid? Правильно! Ваш метод отвалится! Какие к черту "UI сервисы"? Что это за бред вообще? Хотя я конечно прекрасно понимаю что это - тупой соскок, попытка скрыть непригодность MVVM в чистом виде, который не жизнеспособен о чем я говорил выше. На мой взгляд это очевидные вещи, которые Вы не желаете признавть из-за своих амбиций или по другим не известным мне причинам. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2014, 05:18 |
|
Проблемы с иерархическими моделями представлений
|
|||
---|---|---|---|
#18+
Тут кому-то не нравилось, что вью модель скомпонована из других вью моделей. Вот, другие люди совсем не против такого подхода: http://cocktail.ideablade.com/composing-view-models/ Вот то, что я писал выше Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2014, 05:28 |
|
Проблемы с иерархическими моделями представлений
|
|||
---|---|---|---|
#18+
user7320Тут кому-то не нравилось, что вью модель скомпонована из других вью моделей. Вот, другие люди совсем не против такого подхода: http://cocktail.ideablade.com/composing-view-models/ Вот то, что я писал выше Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Единственное, что прямо здесь не показаны байндинги. Но там автор ниже поясняет, что он использует какой-то свой Caliburn.Micro фреймворк, который эти байндинги добавляет. Т. е. всё в чистом виде как у меня. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2014, 05:33 |
|
Проблемы с иерархическими моделями представлений
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2014, 05:47 |
|
Проблемы с иерархическими моделями представлений
|
|||
---|---|---|---|
#18+
user7320Тут кому-то не нравилось, что вью модель скомпонована из других вью моделей. Вот, другие люди совсем не против такого подхода: http://cocktail.ideablade.com/composing-view-models/ Вот то, что я писал выше Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Вместо ContentControl тут могли бы быть UserControl. Код: xml 1. 2. 3. 4. 5. 6. 7. 8.
После множества изысканий мы остановились на таком подходе для реализации "композитности". ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2014, 05:52 |
|
Проблемы с иерархическими моделями представлений
|
|||
---|---|---|---|
#18+
user7320 А Призма вообще за композицию представлений. Вся эта prism-байда отталкивается от неверного утверждения, мол приложения на "голом" WPF плохо разделяются на модули и вообще так себе: авторВ обработчике этой команды Execute при каждом выборе позиции происходит событие TickerSymbolSelected. TrendLine и NewsReader привязаны к нему, они ждут события TickerSymbolSelected и визуализируют свое содержимое, основываясь на выбранном биржевом коде. В данном случае приложение тесно привязано к каждому элементу управления. Для координации всех различных частей в интерфейсе пользователя имеется значительный объем логики. Также существует взаимозависимость между элементами управления. В силу этих зависимостей нет простого способа разбить приложение так, чтобы каждую из отдельных частей можно было разрабатывать отдельно. Для более удобного обслуживания все пользовательские элементы управления можно поместить в отдельную сборку, но это лишь выносит проблему из основного приложения в сборку элементов управления. В этой модели очень сложно вносить значительные изменения или добавлять новые функции.Автор сего творения не знаком с DependencyProperty, DataBinding и прочими возможностями WPF. Как ему можно верить? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2014, 06:05 |
|
Проблемы с иерархическими моделями представлений
|
|||
---|---|---|---|
#18+
Алексей Кuser7320Тут кому-то не нравилось, что вью модель скомпонована из других вью моделей. Вот, другие люди совсем не против такого подхода: http://cocktail.ideablade.com/composing-view-models/ Вот то, что я писал выше Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Вместо ContentControl тут могли бы быть UserControl. Код: xml 1. 2. 3. 4. 5. 6. 7. 8.
После множества изысканий мы остановились на таком подходе для реализации "композитности". А есть разница? Я хотел обратить внимание на то, что удивился, что вы тут резко против композиции вью и вью моделей. Я понял, почему мне приходится обрабатывать дублирование данных и как тут сказали "подменять вью модель". У меня интерфейс такой, как на картинке. Я хочу создавать объект слева, жать на кнопку и заталкивать его в коллекцию потомков выбранного узла дерева справа. При этом хочу иметь возможность делать это много раз подряд - т. е. просто долбить кнопку добавления и копия одного и того же объекта будет добавляться в дерево. А у МСУ в его примере каждый новый объект создаётся в модальном окне, окно возвращает новый созданный объект главному окну и сервис вставляет этот новый объект в грид. А до грида - сохранят в репозитории (или где у него там данные хранятся). Т. е. он тоже делает два сохранения вместо одного - в репозиторий и в грид руками. Только он не копирует объект, т. к. ему не надо вставлять копию одного и того же много раз. По сути, мой и МСУ подход мало чем отличается - у него только сервис добавлен для уменьшения связей и нет моей функциональности копирования. МСУ, ты бы смог сделать так же, как у тебя, но без отдельного окна для нового объекта, а чтобы новый объект создавался рядом с гридом, типа как у меня рядом с деревом? Или это криминал? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2014, 06:48 |
|
Проблемы с иерархическими моделями представлений
|
|||
---|---|---|---|
#18+
Плюс в другом месте моего приложения тоже копирование применено. Мне надо было организовать подобие буфера обмена. У меня был конструктор объекта, который представлял буфер, и коллекция этих объектов. Надо было сделать так, чтобы при нажатии правой кнопкой мыши на любой объект из коллекции этот объект копировался в буфер (и, соответственно, в конструктор для его редактирования), а при нажатии на левую - из буфер заменял собой тот объект, на который нажали. Если то же дерево моё рассматривать, то мне надо было правой кнопкой мыши кликать на любом элементе дерева для копирования, и левой - для вставки. Поэтому я активно использовал подмену вью моделей. А копирование сделал через бинарную сериализацию. Причём как моделей, так и вью моделей. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2014, 06:53 |
|
Проблемы с иерархическими моделями представлений
|
|||
---|---|---|---|
#18+
user7320Я хочу создавать объект слева, жать на кнопку и заталкивать его в коллекцию потомков выбранного узла дерева справа. При этом хочу иметь возможность делать это много раз подряд - т. е. просто долбить кнопку добавления и копия одного и того же объекта будет добавляться в дерево.И что это меняет? У меня есть контрол ItemsMultiSelector , правда примера по его применению нету, он используется в других проектах. Единственное отличие от твоего - там нет дерева, просто список. Но это так же ничего не меняет. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2014, 06:59 |
|
Проблемы с иерархическими моделями представлений
|
|||
---|---|---|---|
#18+
user7320Алексей Кпропущено... Вместо ContentControl тут могли бы быть UserControl. Код: xml 1. 2. 3. 4. 5. 6. 7. 8.
После множества изысканий мы остановились на таком подходе для реализации "композитности". А есть разница?Не сильно. Просто показал альтернативное решение. user7320Я хотел обратить внимание на то, что удивился, что вы тут резко против композиции вью и вью моделей.Ещё раз. Я против смешивания в одних классах логики и структуры данных. Это нарушение SRP. Из-за этого тебе приходится описывать объёмную структуру данных в нескольких местах и заниматься бесполезным делегированием. А всё ради размещения логики в сеттерах свойств. Оно того не стоит. Ищи альтернативный способ размещения логики. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2014, 07:13 |
|
Проблемы с иерархическими моделями представлений
|
|||
---|---|---|---|
#18+
user7320Я понял, почему мне приходится обрабатывать дублирование данных и как тут сказали "подменять вью модель". У меня интерфейс такой, как на картинке. Я хочу создавать объект слева, жать на кнопку и заталкивать его в коллекцию потомков выбранного узла дерева справа. При этом хочу иметь возможность делать это много раз подряд - т. е. просто долбить кнопку добавления и копия одного и того же объекта будет добавляться в дерево. А view model зачем для этого подменять. Просто после добавления создавай новый объект и знакомь VM левой панели с ним. Типа: Код: c# 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2014, 08:58 |
|
Проблемы с иерархическими моделями представлений
|
|||
---|---|---|---|
#18+
Алексей КЯ против смешивания в одних классах логики и структуры данных. Это нарушение SRP. Это мне кажется ООП - когда в классе есть структура данных и некоторая логика, которая ее обслуживает. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2014, 09:00 |
|
Проблемы с иерархическими моделями представлений
|
|||
---|---|---|---|
#18+
WebSharperАлексей КЯ против смешивания в одних классах логики и структуры данных. Это нарушение SRP. Это мне кажется ООП - когда в классе есть структура данных и некоторая логика, которая ее обслуживает.Это особенность ООП в распределённых приложениях, коим является 2-х или 3-х звенка. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2014, 09:23 |
|
Проблемы с иерархическими моделями представлений
|
|||
---|---|---|---|
#18+
WebSharperuser7320Я понял, почему мне приходится обрабатывать дублирование данных и как тут сказали "подменять вью модель". У меня интерфейс такой, как на картинке. Я хочу создавать объект слева, жать на кнопку и заталкивать его в коллекцию потомков выбранного узла дерева справа. При этом хочу иметь возможность делать это много раз подряд - т. е. просто долбить кнопку добавления и копия одного и того же объекта будет добавляться в дерево. А view model зачем для этого подменять. Просто после добавления создавай новый объект и знакомь VM левой панели с ним. Типа: Код: c# 1. 2. 3. 4. 5.
При этом будут пустые поля левой панели. А мне надо, чтобы остались старые заполненные. Я пока самое простое, что придумал, это скопировать старую вью модель (с её моделью, естественно) и отдать её в коллекцию-дерево. Ну а старую оставить. Копирю через BinaryFormatter, предварительно расставив где надо атрибуты сериализации. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2014, 10:31 |
|
Проблемы с иерархическими моделями представлений
|
|||
---|---|---|---|
#18+
James Bond FRКоллега, Вас уже два раза ткнули носом в Ваши косяки, но судя по всему Вы из тех людей, которые с пеной у рта готовы доказывать свою не правоту. А ты забавный. 1. Не понимаешь разницу между tier и layer, несешь околопоносный бред. 2. Не умеешь использовать view сервисы в mvvm. А теперь оказывается, что ты меня там куда-то ткнул? Самому-то не смешно? James Bond FRЕще раз - в чем смысл MVVM да и любого паттерна в принципе? Это уже другой вопрос. Я заметил, ты как еврей скачешь с одной темы не другую, пытаешься замести следы собственных сливов. Доколе? James Bond FRИдея MVVM да и WPF(Silverlight) в целом - дизайнер рисует UI, прогер кодит. В итоге дизайнер биндит контролы на сущности и все работает. С этим надеюсь тоже согласны? Что произойдет если дизайнер изменит имя employeesGrid на MyEmployeesGrid? Правильно! Ваш метод отвалится! Какие к черту "UI сервисы"? Что это за бред вообще? Хотя я конечно прекрасно понимаю что это - тупой соскок, попытка скрыть непригодность MVVM в чистом виде, который не жизнеспособен о чем я говорил выше. На мой взгляд это очевидные вещи, которые Вы не желаете признавть из-за своих амбиций или по другим не известным мне причинам. Я тебе не буду распинаться и доказывать нужность MVVM в XAML. Когда дорастешь до этого, сам поймешь. Я лишь окунаю тебя в то, в чем ты полный ноль. А это видно издалека. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2014, 10:42 |
|
Проблемы с иерархическими моделями представлений
|
|||
---|---|---|---|
#18+
user7320По сути, мой и МСУ подход мало чем отличается - у него только сервис добавлен для уменьшения связей и нет моей функциональности копирования. Правильно. Суть сервиса как-раз убрать эту зависимость. И логики в нём должно быть по минимуму. В идеале лучше стараться без него обойтись. user7320МСУ, ты бы смог сделать так же, как у тебя, но без отдельного окна для нового объекта, а чтобы новый объект создавался рядом с гридом, типа как у меня рядом с деревом? Или это криминал? Так это без сервиса всё делается. Байдинг на правильную вью модель, ICommand наполняет коллекцию, всё это отображается во вью. Детский сад. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2014, 10:47 |
|
Проблемы с иерархическими моделями представлений
|
|||
---|---|---|---|
#18+
Алексей КИз-за этого тебе приходится описывать объёмную структуру данных в нескольких местах и заниматься бесполезным делегированием. А всё ради размещения логики в сеттерах свойств. Оно того не стоит. Ищи альтернативный способ размещения логики. Ну почему только в свойствах. Сейчас у меня это в командах. Я заметил, что не использую Children_CollectionChanged в своей ObservableCollection Children. Попробую логику изменения модели поместить туда. Т. е. в команде будет меняться вью модель дерева - потомок добавляться в Children, а в событии CollectionChanged будет обновляться модель... ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2014, 11:02 |
|
Проблемы с иерархическими моделями представлений
|
|||
---|---|---|---|
#18+
user7320При этом будут пустые поля левой панели. То есть после добавления надо редактировать новый айтем, но являющийся копией только то добавленного. Код: c# 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2014, 11:09 |
|
Проблемы с иерархическими моделями представлений
|
|||
---|---|---|---|
#18+
мсущкоJames Bond FRКоллега, Вас уже два раза ткнули носом в Ваши косяки, но судя по всему Вы из тех людей, которые с пеной у рта готовы доказывать свою не правоту. А ты забавный. 1. Не понимаешь разницу между tier и layer, несешь околопоносный бред. 2. Не умеешь использовать view сервисы в mvvm. А теперь оказывается, что ты меня там куда-то ткнул? Самому-то не смешно? James Bond FRЕще раз - в чем смысл MVVM да и любого паттерна в принципе? Это уже другой вопрос. Я заметил, ты как еврей скачешь с одной темы не другую, пытаешься замести следы собственных сливов. Доколе? James Bond FRИдея MVVM да и WPF(Silverlight) в целом - дизайнер рисует UI, прогер кодит. В итоге дизайнер биндит контролы на сущности и все работает. С этим надеюсь тоже согласны? Что произойдет если дизайнер изменит имя employeesGrid на MyEmployeesGrid? Правильно! Ваш метод отвалится! Какие к черту "UI сервисы"? Что это за бред вообще? Хотя я конечно прекрасно понимаю что это - тупой соскок, попытка скрыть непригодность MVVM в чистом виде, который не жизнеспособен о чем я говорил выше. На мой взгляд это очевидные вещи, которые Вы не желаете признавть из-за своих амбиций или по другим не известным мне причинам. Я тебе не буду распинаться и доказывать нужность MVVM в XAML. Когда дорастешь до этого, сам поймешь. Я лишь окунаю тебя в то, в чем ты полный ноль. А это видно издалека. Очень жаль коллега, но Вы очередная форумная пустышка. За сим откланиваюсь, кому нужно тот все понял. Удачи. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2014, 11:13 |
|
Проблемы с иерархическими моделями представлений
|
|||
---|---|---|---|
#18+
Алексей КЭто особенность ООП в распределённых приложениях, коим является 2-х или 3-х звенка. И на любом из них соответсвющая структура данных объединена в соответствующих объектах с соответсвующей логикой. Или вы имеете ввиду анемичную доменную модель . ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2014, 11:14 |
|
Проблемы с иерархическими моделями представлений
|
|||
---|---|---|---|
#18+
James Bond FRмсущкопропущено... А ты забавный. 1. Не понимаешь разницу между tier и layer, несешь околопоносный бред. 2. Не умеешь использовать view сервисы в mvvm. А теперь оказывается, что ты меня там куда-то ткнул? Самому-то не смешно? пропущено... Это уже другой вопрос. Я заметил, ты как еврей скачешь с одной темы не другую, пытаешься замести следы собственных сливов. Доколе? пропущено... Я тебе не буду распинаться и доказывать нужность MVVM в XAML. Когда дорастешь до этого, сам поймешь. Я лишь окунаю тебя в то, в чем ты полный ноль. А это видно издалека. Очень жаль коллега, но Вы очередная форумная пустышка. За сим откланиваюсь, кому нужно тот все понял. Удачи. Очень забавно такое читать от ламера, который слой звеном называет. Иди учись лучше, клоун. Буквари я тебе дал, как прочтешь, тогда и приходи на форум программистов. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2014, 11:37 |
|
Проблемы с иерархическими моделями представлений
|
|||
---|---|---|---|
#18+
WebSharperuser7320При этом будут пустые поля левой панели. То есть после добавления надо редактировать новый айтем, но являющийся копией только то добавленного. Код: c# 1. 2. 3. 4.
Я так и делаю. Всё дело в Clone(). Ваши предложения по его реализации? Лично я в сериализацию - т. к. она почти наверняка понадобится и для других целей. До этого делал просто метод, копировавший все нужные поля и вызывавший рекурсивно подобные же методы из составляющих моделей. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2014, 12:40 |
|
Проблемы с иерархическими моделями представлений
|
|||
---|---|---|---|
#18+
WebSharperАлексей КЭто особенность ООП в распределённых приложениях, коим является 2-х или 3-х звенка. И на любом из них соответсвющая структура данных объединена в соответствующих объектах с соответсвующей логикой.Если не лень писать DTO, воевать с "N+1 запрос" и прочими прелестями, в том числе представленными в данном топике - я не против. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2014, 14:30 |
|
|
start [/forum/topic.php?fid=21&msg=38634300&tid=1441125]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
84ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
others: | 312ms |
total: | 488ms |
0 / 0 |