|
Получения данных из DataGrid WPF MVVM
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныМСУВы чего, люди? Вью модель ничего не должна знать о окне! Это железобетонно. Ну, раз уж пошла такая пьянка (про pure MVVM), то ViewModel ничего не должна знать о Window как о классе, т.е. сборка с ViewModel не должна зависеть от WindowsBase, PresentationCore, etc. А открытие окна из модели нужно делать в сервисе путем дергания инжекта. Иначе ночью придет джошсмит, и расстреляет из реактивного говномета.+1 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2013, 06:48 |
|
Получения данных из DataGrid WPF MVVM
|
|||
---|---|---|---|
#18+
Алексей КНу тогда мучайся, тебя предупредили. А где мучение? У меня всё работает. Просто я спросил, красиво ли так делать и быть может есть более разумные способы решения. А прибивать к вьюмодели гвозди - это жесть. Алексей ККак тебе решение ? Оно тебе надо? :-) Жуть. Оно мне не надо. Задача решается намного проще - через отдельный сервис окон IWindowService, как я уже писал. На ICommand вешаем свой вьюмодельный RelayCommand, в котором через инверсию общаемся с IWindowService, который всё знает о окнах. Никаких проблем, всё линейно и красиво. Алексей КА главное, не надо подписываться из View на события ViewModel, есть опасность утечки памяти, если время жизни ViewModel больше чем View. Например, если View является ControlTemplate/DataTemplate. Лучше смотри решение через жопу присоединяемое свойство. В моём случае, который я обрисовал, где утечка памяти? У меня самый простой случай, без всяких присоединяемых свойств и прочей мути. Классическая инъекция зависимости в виде отдельного оконного слоя. Алексей КА теперь ответь себе на вопрос - тебе нужно несколько View к одной ViewModel? :-) 1. У каждого окна своя вьюмодель. 2. Вьюмодель не имеет ссылки на окно. 3. Общение с окнами происходит через отдельный сервис окон. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2013, 09:59 |
|
Получения данных из DataGrid WPF MVVM
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныМСУВы чего, люди? Вью модель ничего не должна знать о окне! Это железобетонно. Ну, раз уж пошла такая пьянка (про pure MVVM), то ViewModel ничего не должна знать о Window как о классе, т.е. сборка с ViewModel не должна зависеть от WindowsBase, PresentationCore, etc. А открытие окна из модели нужно делать в сервисе путем дергания инжекта. Иначе ночью придет джошсмит, и расстреляет из реактивного говномета. Так ViewModel и так ничего не знает о Window классе, она общается с сервисом окон. А сервис окон знает о Window. ViewModel у меня не зависит от WindowsBase и PresentationCore. У меня всё именно так и работает. Код: 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. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2013, 10:02 |
|
Получения данных из DataGrid WPF MVVM
|
|||
---|---|---|---|
#18+
МСУЗадача решается намного проще - через отдельный сервис окон IWindowService, как я уже писал. На ICommand вешаем свой вьюмодельный RelayCommand, в котором через инверсию общаемся с IWindowService, который всё знает о окнах текущем окне .Этого может быть недостаточно. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2013, 10:16 |
|
Получения данных из DataGrid WPF MVVM
|
|||
---|---|---|---|
#18+
МСУВ моём случае, который я обрисовал, где утечка памяти?В твоём случае нет. Я про общий случай. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2013, 10:17 |
|
Получения данных из DataGrid WPF MVVM
|
|||
---|---|---|---|
#18+
Алексей КЭтого может быть недостаточно. Примеры в студию, когда сервис окон курит в сторонке. Алексей КВ твоём случае нет. Я про общий случай. А зачем тогда меня пугаешь? :) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2013, 10:20 |
|
Получения данных из DataGrid WPF MVVM
|
|||
---|---|---|---|
#18+
МСУЗадача решается намного проще - через отдельный сервис окон IWindowService, как я уже писал. На ICommand вешаем свой вьюмодельный RelayCommand, в котором через инверсию общаемся с IWindowService, который всё знает о окнах текущем окне окнах Application.Current.Windows ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2013, 10:22 |
|
Получения данных из DataGrid WPF MVVM
|
|||
---|---|---|---|
#18+
МСУАлексей КНу тогда мучайся, тебя предупредили. А где мучение? У меня всё работает.Само собой работает. Но я про удобства. МСУПросто я спросил, красиво ли так делать и быть может есть более разумные способы решения. А прибивать к вьюмодели гвозди - это жесть.Ещё ни разу не встречал разумного объяснения, в чём эта "жесть" заключается. Чего мне такого неприятного придётся пережить, если я назло всем сделаю ссылку от ViewModel к View? :-) А меж тем, сам Микрософт такими ссылками балуется. Смотри метод Control.GetTemplateChild. Это самое оно. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2013, 10:23 |
|
Получения данных из DataGrid WPF MVVM
|
|||
---|---|---|---|
#18+
МСУМСУЗадача решается намного проще - через отдельный сервис окон IWindowService, как я уже писал. На ICommand вешаем свой вьюмодельный RelayCommand, в котором через инверсию общаемся с IWindowService, который всё знает о окнах текущем окне окнах Application.Current.WindowsНу и какое из них привязано к "этой" ViewModel? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2013, 10:24 |
|
Получения данных из DataGrid WPF MVVM
|
|||
---|---|---|---|
#18+
МСУА зачем тогда меня пугаешь? :)Чтоб не расслаблялся. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2013, 10:25 |
|
Получения данных из DataGrid WPF MVVM
|
|||
---|---|---|---|
#18+
Алексей КСамо собой работает. Но я про удобства. Зачем мне подсовывать в виде "удобства" это ? Если у меня и так всё работает ? :) Алексей КЕщё ни разу не встречал разумного объяснения, в чём эта "жесть" заключается. Задайся вопросом, ради чего тогда нужна вьюмодель. Только не торопись с ответом. Алексей КЧего мне такого неприятного придётся пережить, если я назло всем сделаю ссылку от ViewModel к View? :-) Чего мне такого неприятного придётся пережить, если я логику буду писать в виде лапшекода из 10К строк в контроллере? :) Алексей КА меж тем, сам Микрософт такими ссылками балуется. Смотри метод Control.GetTemplateChild. Это самое оно. Так это же System.Windows.Controls. Или ты о чем? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2013, 10:29 |
|
Получения данных из DataGrid WPF MVVM
|
|||
---|---|---|---|
#18+
Алексей КМСУпропущено... Application.Current.WindowsНу и какое из них привязано к "этой" ViewModel? Активное. Но я могу привязать любое, мне кто-то запрещает? Например, вязаться по имени. Алексей КМСУА зачем тогда меня пугаешь? :)Чтоб не расслаблялся. Ок :) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2013, 10:30 |
|
Получения данных из DataGrid WPF MVVM
|
|||
---|---|---|---|
#18+
МСУАлексей КЕщё ни разу не встречал разумного объяснения, в чём эта "жесть" заключается. Задайся вопросом, ради чего тогда нужна вьюмодель. Только не торопись с ответом.Её можно наследовать, а UserControl - нет. Её можно повторно использовать с разными View, в отличие от code-behind. Для меня это основные причины для выделения фрагмента code-behind в отдельный класс. МСУАлексей КЧего мне такого неприятного придётся пережить, если я назло всем сделаю ссылку от ViewModel к View? :-) Чего мне такого неприятного придётся пережить, если я логику буду писать в виде лапшекода из 10К строк в контроллере? :)10К лапшекода можно настрочить в отдельном классе с не меньшим успехом. МСУАлексей КА меж тем, сам Микрософт такими ссылками балуется. Смотри метод Control.GetTemplateChild. Это самое оно. Так это же System.Windows.Controls. Или ты о чем?О нём самом. Класс-потомок Control - это ViewModel, ControlTemplate - это View. Как тебе такой подход? :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2013, 10:37 |
|
Получения данных из DataGrid WPF MVVM
|
|||
---|---|---|---|
#18+
МСУАлексей Кпропущено... Ну и какое из них привязано к "этой" ViewModel? Активное. Но я могу привязать любое, мне кто-то запрещает? Например, вязаться по имени .Здравствуй Prism с его RegionManager. Ну и накой эти педали? Не проще иметь ссылку на View? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2013, 10:41 |
|
Получения данных из DataGrid WPF MVVM
|
|||
---|---|---|---|
#18+
Алексей КМСУпропущено... Активное. Но я могу привязать любое, мне кто-то запрещает? Например, вязаться по имени .Здравствуй Prism с его RegionManager. Ну и накой эти педали? Не проще иметь ссылку на View?Там самое интересное начинается, когда в приложении появляется несколько регионов с одинаковым именем. Был тут такой вопрос на форуме.... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2013, 10:43 |
|
Получения данных из DataGrid WPF MVVM
|
|||
---|---|---|---|
#18+
Алексей КЕё можно наследовать, а UserControl - нет. Мне это не нужно, я же говорил, что вью модель одна у окна. Во-вторых, она используется для разделения модели и её представления, что необходимо для изменения их по-отдельности. Например, разработчик задает логику работы с данными, а дизайнер соответственно работает с пользовательским интерфейсом. Рефакторить и довинчивать функционал к такой архитектуре - одно удовольствие. Что-то похожее с asp.net mvc представлением cshtml. Алексей КЕё можно повторно использовать с разными View, в отличие от code-behind. Нахрен не нужно, уже ответил. Алексей КДля меня это основные причины для выделения фрагмента code-behind в отдельный класс. Причины высосаны из пальца и просто унылы, извини... :) Алексей К10К лапшекода можно настрочить в отдельном классе с не меньшим успехом. О чем я и говорю, поэтому смысл писать про "можно ли это пережить". Пережить можно даже ассемблерные вставки в дельфи коде :) Алексей КО нём самом. Класс-потомок Control - это ViewModel, ControlTemplate - это View. Как тебе такой подход? :-) С каких красот Control это ViewModel? :) Алексей КЗдравствуй Prism с его RegionManager. Ну и накой эти педали? Не проще иметь ссылку на View? Ну мне это не нужно, у меня маппинг окна в оконном сервисе происходит по активности. Этого достаточно же. Алексей КТам самое интересное начинается, когда в приложении появляется несколько регионов с одинаковым именем. Был тут такой вопрос на форуме.... Организуй демку, а то не понятно. Пожуём, пощупаем :) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2013, 10:58 |
|
Получения данных из DataGrid WPF MVVM
|
|||
---|---|---|---|
#18+
МСУ, а вот интересно твой "оконный сервис" как поможет в задаче получить значения какого-то свой-ва View? Не окна, а какого-то контрола в окне? Например, это может быть связано с пересчетом координат и тут VM вряд ли поможет :) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2013, 11:17 |
|
Получения данных из DataGrid WPF MVVM
|
|||
---|---|---|---|
#18+
МСУАлексей КЕё можно наследовать, а UserControl - нет. Мне это не нужноЭто пока. Потом захочется иметь типовой функционал, например, для форм редактирования. МСУВо-вторых, она используется для разделения модели и её представления, что необходимо для изменения их по-отдельности. Например, разработчик задает логику работы с данными, а дизайнер соответственно работает с пользовательским интерфейсом. Рефакторить и довинчивать функционал к такой архитектуре - одно удовольствие. Что-то похожее с asp.net mvc представлением cshtml.Но это же банально. Я просто об этом не говорю. :-) МСУАлексей КЕё можно повторно использовать с разными View, в отличие от code-behind. Нахрен не нужно, уже ответил.У тебя всё ещё впереди, если собрался плотно этим заниматься. :-) МСУАлексей КДля меня это основные причины для выделения фрагмента code-behind в отдельный класс. Причины высосаны из пальца и просто унылы, извини... :)Время нас рассудит. :-) МСУАлексей КО нём самом. Класс-потомок Control - это ViewModel, ControlTemplate - это View. Как тебе такой подход? :-) С каких красот Control это ViewModel? :)В контексте отдельного элемента управления - именно так. Но это моё эксклюзивное видение ситуации. Такого ты больше нигде не встретишь. :-) МСУАлексей КЗдравствуй Prism с его RegionManager. Ну и накой эти педали? Не проще иметь ссылку на View? Ну мне это не нужно, у меня маппинг окна в оконном сервисе происходит по активности. Этого достаточно же.Сегодня не нужно, завтра потребуется. Но дело твоё, уговаривать не собираюсь. :-) МСУАлексей КТам самое интересное начинается, когда в приложении появляется несколько регионов с одинаковым именем. Был тут такой вопрос на форуме.... Организуй демку, а то не понятно. Пожуём, пощупаем :)Я как раз сейчас заканчиваю работу над "фреймворк" + "демка" + "мануал" для нашего внутреннего использования. Высока вероятность её публикации в Интернете. Там всё будет. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2013, 11:23 |
|
Получения данных из DataGrid WPF MVVM
|
|||
---|---|---|---|
#18+
netivanМСУ, а вот интересно твой "оконный сервис" как поможет в задаче получить значения какого-то свой-ва View? Не окна, а какого-то контрола в окне? Например, это может быть связано с пересчетом координат и тут VM вряд ли поможет :) netivan, не гоже такие ламерские вопросы задавать мне, не впф-нику... :) Получить значения какого-то свой-ва View поможет вьюмодель, которая привязана к датаконтексту. Вьюмодель общается через IoC с оконным сервисом, поэтому это значение смело уйдёт в него и помашет ручкой. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2013, 11:25 |
|
Получения данных из DataGrid WPF MVVM
|
|||
---|---|---|---|
#18+
Алексей КЭто пока. Потом захочется иметь типовой функционал, например, для форм редактирования. Я решаю проблемы по мере их поступления :) Алексей КНо это же банально. Я просто об этом не говорю. :-) ...[image=http://file.mobilmusic.ru/fc/ab/e2/975487-220.jpg] Алексей КУ тебя всё ещё впереди, если собрался плотно этим заниматься. :-) В вебе каждая страница была своя, никаких наследований и прочей ерунды. Наследование было на уровне модели представления и только. Проблем никаких. Так на кой оно мне в xaml нужно? :) Алексей КВремя нас рассудит. :-) Я забыл о "наследовании форм" еще со времен дельфи кодирования... Наследование в виде базового класса для модели - это как пить дать. Но наследование гуя... в топку. Ты просто обязан со мной согласиться. Потому что я чую, что ты нихрена не пользуешься наследованием UI. Ну признайся честно? Ну пецдишь веть МСУпропущено... С каких красот Control это ViewModel? :)В контексте отдельного элемента управления - именно так. Но это моё эксклюзивное видение ситуации. Такого ты больше нигде не встретишь. :-) Алексей КСегодня не нужно, завтра потребуется. Но дело твоё, уговаривать не собираюсь. :-) Вот я и спросил про эти ситуации, может ли моя "активность окна" выйти боком. А ты накинулся пугать какими-то аттачед пропертями, учетками и прочими гадостями. Просто я пока не могу придумать кейс, в котором моя активность окна положит архитектуру на лопатки... Вообщем, тебе задача - придумать такой кейс, чтобы я спал спокойно - исходники демки прилагаю. И не противься, просто сделай вещи :) Алексей КЯ как раз сейчас заканчиваю работу над "фреймворк" + "демка" + "мануал" для нашего внутреннего использования. Высока вероятность её публикации в Интернете. Там всё будет. :-) Ну там будет много лохмотьев, которые мне пока не нужны и только замусолят мне моск. Я хочу конкретного ответа по конкретному узкому вопросу :) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2013, 11:37 |
|
Получения данных из DataGrid WPF MVVM
|
|||
---|---|---|---|
#18+
МСУ, т.е. VM скажет твоему сервису найди мою View по моему Ctx в этом окне? Кстати,а если окно WinForm? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2013, 11:39 |
|
Получения данных из DataGrid WPF MVVM
|
|||
---|---|---|---|
#18+
netivanМСУ, т.е. VM скажет твоему сервису найди мою View по моему Ctx в этом окне? Я же всё объяснил кодом 15113285 netivanКстати,а если окно WinForm? Какая разница. VM вообще ничего не знает о том, WPF это или WinForms. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2013, 11:47 |
|
Получения данных из DataGrid WPF MVVM
|
|||
---|---|---|---|
#18+
МСУАлексей КУ тебя всё ещё впереди, если собрался плотно этим заниматься. :-) В вебе каждая страница была своя, никаких наследований и прочей ерунды. Наследование было на уровне модели представления и только. Проблем никаких. Так на кой оно мне в xaml нужно? :) МСУАлексей КВремя нас рассудит. :-) Я забыл о "наследовании форм" еще со времен дельфи кодирования... Наследование в виде базового класса для модели - это как пить дать. Но наследование гуя... в топку. Ты просто обязан со мной согласиться. Потому что я чую, что ты нихрена не пользуешься наследованием UI. Ну признайся честно? Ну пецдишь веть Я говорю как раз о наследовании [View]Model. Про наследование View я не говорил. Ты запутался. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2013, 11:51 |
|
Получения данных из DataGrid WPF MVVM
|
|||
---|---|---|---|
#18+
МСУКакая разница. VM вообще ничего не знает о том, WPF это или WinForms.Оптимист. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.11.2013, 11:52 |
|
|
start [/forum/topic.php?fid=21&msg=38461311&tid=1441238]: |
0ms |
get settings: |
7ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
54ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 161ms |
0 / 0 |