|
TreeViewItem
|
|||
---|---|---|---|
#18+
user7320Алексей КРазумнее рассматривать класс TreeViewItem как часть ViewModel. Тогда и концепция MVVM применяется и все имеющиеся возможности WPF используются. Там когда привязку делаешь, TreeViewItem автоматом генерится как обёртка над привязываемым значением из модели представления, вроде. Я к тому, что TreeViewItem больше относится к генерации представления. Т. е. если охота вручную TreeViewItem добавлять, то в MVVM это лучше делать в коде поддержки - этакая вью-вью-модель. Похожая ситуация, кстати, возникает и когда используешь какой-нибудь knockout в asp.net mvc - так в нокауте тоже есть модели. Тогда эти модели это что, в свете того, что у нас уже есть модели на сервере - "вью модели" или "модели на клиенте"? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2014, 11:23 |
|
TreeViewItem
|
|||
---|---|---|---|
#18+
user7320Я, правда, не понял, почему у ТСа не отрабатывается событие SelectedItemChanged. У меня через MVVM к тому же событию команда привязана и всё отрабатывается, когда я кликаю на невыбранный айтим. В своих исследованиях по связыванию Data и TreeViewItem я пытался зайти через "заднее крыльцо" - я создавал дерево путем создания элементов TreeViewItem и втыкания их в TreeView. В этом случае, под рукой был и элемент Data и TreeViewItem. Однако, при таком создании TreeViewItem нужно было самостоятельно соорудить и обработчик для SelectedItemChanged (а может быть я ошибаюсь). А иначе, полученное деревце никак не реагирует на то что в него кто-то тычет мышью. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2014, 11:49 |
|
TreeViewItem
|
|||
---|---|---|---|
#18+
user7320user7320пропущено... Там когда привязку делаешь, TreeViewItem автоматом генерится как обёртка над привязываемым значением из модели представления, вроде. Я к тому, что TreeViewItem больше относится к генерации представления. Т. е. если охота вручную TreeViewItem добавлять, то в MVVM это лучше делать в коде поддержки - этакая вью-вью-модель.Я о том, что не надо самому писать аналог класса TreeViewItem со свойствами Content, IsExpanded, IsSelected и т. п. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2014, 12:36 |
|
TreeViewItem
|
|||
---|---|---|---|
#18+
Алексей Кuser7320пропущено... Я к тому, что TreeViewItem больше относится к генерации представления. Т. е. если охота вручную TreeViewItem добавлять, то в MVVM это лучше делать в коде поддержки - этакая вью-вью-модель.Я о том, что не надо самому писать аналог класса TreeViewItem со свойствами Content, IsExpanded, IsSelected и т. п. Тогда по этой логике и CollectionView может заменить коллеции из VM? Ведь "аналог" класса TreeViewItem во VM не просто свойства такие содержит, но и логику по ленивой загрузке и прочую логику. Например, отрисовку крестика ("можно развернуть"), если айтим содержит потомков, или другого рисунка, если не содержит. Много чего ещё. А как "расширить" подобной функциональностью TreeViewItem? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2014, 13:37 |
|
TreeViewItem
|
|||
---|---|---|---|
#18+
user7320Ведь "аналог" класса TreeViewItem во VM не просто свойства такие содержит, но и логику по ленивой загрузке и прочую логику. Например, отрисовку крестика ("можно развернуть"), если айтим содержит потомков, или другого рисунка, если не содержит. Много чего ещё. А как "расширить" подобной функциональностью TreeViewItem?Я не говорил, что модель и HierarhicalDataTemplate не нужны. Всё что нет в TreeViewItem должно быть в модели. Но не надо пихать в модель то что есть в TreeViewItem, только если для этого есть особые причины. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2014, 13:44 |
|
TreeViewItem
|
|||
---|---|---|---|
#18+
Алексей Кuser7320Ведь "аналог" класса TreeViewItem во VM не просто свойства такие содержит, но и логику по ленивой загрузке и прочую логику. Например, отрисовку крестика ("можно развернуть"), если айтим содержит потомков, или другого рисунка, если не содержит. Много чего ещё. А как "расширить" подобной функциональностью TreeViewItem?Я не говорил, что модель и HierarhicalDataTemplate не нужны. Всё что нет в TreeViewItem должно быть в модели. Но не надо пихать в модель то что есть в TreeViewItem, только если для этого есть особые причины. А где я пихаю? Я привязываю. У VM IsExpanded и у V IsExpanded - привязал. Также как у VM текстовое поле и у V тоже есть TextBox - тоже привязал. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2014, 13:48 |
|
TreeViewItem
|
|||
---|---|---|---|
#18+
user7320Я привязываю. У VM IsExpanded и у V IsExpanded - привязал.А зачем: 1. Добавить свойство в VM. 2. Добавить привязку данных V <=> VM. Может проще дать логике ссылку на TreeViewItem? Разумеется, это не единственное решение, просто предлагаю об этом подумать. :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2014, 13:54 |
|
TreeViewItem
|
|||
---|---|---|---|
#18+
Алексей Кuser7320Я привязываю. У VM IsExpanded и у V IsExpanded - привязал.А зачем: 1. Добавить свойство в VM. 2. Добавить привязку данных V <=> VM. Может проще дать логике ссылку на TreeViewItem? Разумеется, это не единственное решение, просто предлагаю об этом подумать. :-) Вы можете привести пример?.. Хотя, если это связано с вашей работой "Простое решение", где у вас предполагается настолько тесная связь между V и VM, что VM ссылается на V (а не наоборот, как в классике), то не надо. )) Если вы дадите ВМ ссылку на В, то останется ли возможность привязывать несколько В к одной ВМ? Каким образом? И что станет со всеми этими словами "меньше связность - лучше тестирование"? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2014, 14:49 |
|
TreeViewItem
|
|||
---|---|---|---|
#18+
user7320Если вы дадите ВМ ссылку на В, то останется ли возможность привязывать несколько В к одной ВМ? Каким образом?Конечно, нет. Если требуется такая возможность - используй классический MVVM на здоровье. :-) Но часто ли это надо? user7320И что станет со всеми этими словами "меньше связность - лучше тестирование"?Тестировать надо модель, а она, обычно, на сервере. Впрочем, "пилите, Шура, пилите, они золотые..." :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2014, 15:01 |
|
TreeViewItem
|
|||
---|---|---|---|
#18+
зы: Ещё раз обращаю внимание на фразу: "Это не единственное решение, просто предлагаю об этом подумать". ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2014, 15:03 |
|
TreeViewItem
|
|||
---|---|---|---|
#18+
Алексей Кuser7320Если вы дадите ВМ ссылку на В, то останется ли возможность привязывать несколько В к одной ВМ? Каким образом?Конечно, нет. Если требуется такая возможность - используй классический MVVM на здоровье. :-) Но часто ли это надо? Ладно, дайте ссылку, где у вас пример с привязкой ВМ ко В. Или лучше словами простыми опишите, как вы это делаете. Я вот примерно такой подход применил, когда надо было несколько модальных окон друг на друге показать: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
И для таких штук можно много вложенностей детей сделать. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2014, 15:34 |
|
TreeViewItem
|
|||
---|---|---|---|
#18+
user7320Ладно, дайте ссылку, где у вас пример с привязкой ВМ ко В.Это не у меня, это в WPF. :-) Это любой Control+ControlTemplate или UserControl. Тут описано моё видение MVVM, там же табличка с основными преимуществами и недостатками возможных подходов. user7320Я вот примерно такой подход применил, когда надо было несколько модальных окон друг на друге показать. Тут описана работа с окнами. Но я не пойму вопроса. Модели окон связываются наиболее удобным способом: свойствами, событиями или ещё как. В чём интрига? :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2014, 15:44 |
|
TreeViewItem
|
|||
---|---|---|---|
#18+
Алексей К Тут описана работа с окнами. Но я не пойму вопроса. Модели окон связываются наиболее удобным способом: свойствами, событиями или ещё как. В чём интрига? :-) Да ни в чём. Я просто сделал не по правилам, и боялся, что кто-нибудь увидит и скажет ай-яй-яй. )) Ну, у вас примерно как у меня, только я сразу в DataContext данные пихаю, а не в метод-хелпер. А когда вы делаете "установку содержимого окна" через Код: c# 1. 2.
вы можете потом из этого content свойства раскидать по привязкам в замл-разметке этого окна? Без установки DataContext? И это, вызов нескольких диалоговых окон одно из другого у вас нормально пройдёт? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2014, 18:34 |
|
TreeViewItem
|
|||
---|---|---|---|
#18+
user7320Алексей К Тут описана работа с окнами. Но я не пойму вопроса. Модели окон связываются наиболее удобным способом: свойствами, событиями или ещё как. В чём интрига? :-) Да ни в чём. Я просто сделал не по правилам, и боялся, что кто-нибудь увидит и скажет ай-яй-яй. ))Забей на них. Делай как тебе сегодня удобнее. Не понравится - в новом проекте сделаешь "правильно". Заказчику пофиг как у тебя там написано, ему главное результат а не процесс. user7320Ну, у вас примерно как у меня, только я сразу в DataContext данные пихаю, а не в метод-хелпер.Это да. user7320А когда вы делаете "установку содержимого окна" через Код: c# 1. 2.
вы можете потом из этого content свойства раскидать по привязкам в замл-разметке этого окна? Без установки DataContext?Могу, но это не требуется, поскольку Window является ContentControl-ом, и я в Window вставляю готовое содержимое. В самом Window у меня XAML-разметки нет. user7320И это, вызов нескольких диалоговых окон одно из другого у вас нормально пройдёт?Да, проблем с этим никогда не было. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.04.2014, 18:50 |
|
|
start [/forum/topic.php?fid=21&msg=38602020&tid=1441159]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
159ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 303ms |
total: | 557ms |
0 / 0 |