powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / TreeViewItem
14 сообщений из 39, страница 2 из 2
TreeViewItem
    #38601669
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Алексей КРазумнее рассматривать класс TreeViewItem как часть ViewModel. Тогда и концепция MVVM применяется и все имеющиеся возможности WPF используются.
Там когда привязку делаешь, TreeViewItem автоматом генерится как обёртка над привязываемым значением из модели представления, вроде.
Я к тому, что TreeViewItem больше относится к генерации представления. Т. е. если охота вручную TreeViewItem добавлять, то в MVVM это лучше делать в коде поддержки - этакая вью-вью-модель.

Похожая ситуация, кстати, возникает и когда используешь какой-нибудь knockout в asp.net mvc - так в нокауте тоже есть модели. Тогда эти модели это что, в свете того, что у нас уже есть модели на сервере - "вью модели" или "модели на клиенте"?
...
Рейтинг: 0 / 0
TreeViewItem
    #38601703
ЧитательX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
user7320Я, правда, не понял, почему у ТСа не отрабатывается событие SelectedItemChanged. У меня через MVVM к тому же событию команда привязана и всё отрабатывается, когда я кликаю на невыбранный айтим.
В своих исследованиях по связыванию Data и TreeViewItem я пытался зайти через "заднее крыльцо" - я создавал дерево путем создания элементов TreeViewItem и втыкания их в TreeView. В этом случае, под рукой был и элемент Data и TreeViewItem.
Однако, при таком создании TreeViewItem нужно было самостоятельно соорудить и обработчик для SelectedItemChanged (а может быть я ошибаюсь). А иначе, полученное деревце никак не реагирует на то что в него кто-то тычет мышью.
...
Рейтинг: 0 / 0
TreeViewItem
    #38601767
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320user7320пропущено...

Там когда привязку делаешь, TreeViewItem автоматом генерится как обёртка над привязываемым значением из модели представления, вроде.
Я к тому, что TreeViewItem больше относится к генерации представления. Т. е. если охота вручную TreeViewItem добавлять, то в MVVM это лучше делать в коде поддержки - этакая вью-вью-модель.Я о том, что не надо самому писать аналог класса TreeViewItem со свойствами Content, IsExpanded, IsSelected и т. п.
...
Рейтинг: 0 / 0
TreeViewItem
    #38601848
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Кuser7320пропущено...

Я к тому, что TreeViewItem больше относится к генерации представления. Т. е. если охота вручную TreeViewItem добавлять, то в MVVM это лучше делать в коде поддержки - этакая вью-вью-модель.Я о том, что не надо самому писать аналог класса TreeViewItem со свойствами Content, IsExpanded, IsSelected и т. п.
Тогда по этой логике и CollectionView может заменить коллеции из VM?

Ведь "аналог" класса TreeViewItem во VM не просто свойства такие содержит, но и логику по ленивой загрузке и прочую логику. Например, отрисовку крестика ("можно развернуть"), если айтим содержит потомков, или другого рисунка, если не содержит. Много чего ещё. А как "расширить" подобной функциональностью TreeViewItem?
...
Рейтинг: 0 / 0
TreeViewItem
    #38601853
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Ведь "аналог" класса TreeViewItem во VM не просто свойства такие содержит, но и логику по ленивой загрузке и прочую логику. Например, отрисовку крестика ("можно развернуть"), если айтим содержит потомков, или другого рисунка, если не содержит. Много чего ещё. А как "расширить" подобной функциональностью TreeViewItem?Я не говорил, что модель и HierarhicalDataTemplate не нужны. Всё что нет в TreeViewItem должно быть в модели. Но не надо пихать в модель то что есть в TreeViewItem, только если для этого есть особые причины.
...
Рейтинг: 0 / 0
TreeViewItem
    #38601862
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Кuser7320Ведь "аналог" класса TreeViewItem во VM не просто свойства такие содержит, но и логику по ленивой загрузке и прочую логику. Например, отрисовку крестика ("можно развернуть"), если айтим содержит потомков, или другого рисунка, если не содержит. Много чего ещё. А как "расширить" подобной функциональностью TreeViewItem?Я не говорил, что модель и HierarhicalDataTemplate не нужны. Всё что нет в TreeViewItem должно быть в модели. Но не надо пихать в модель то что есть в TreeViewItem, только если для этого есть особые причины.
А где я пихаю? Я привязываю. У VM IsExpanded и у V IsExpanded - привязал. Также как у VM текстовое поле и у V тоже есть TextBox - тоже привязал.
...
Рейтинг: 0 / 0
TreeViewItem
    #38601873
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Я привязываю. У VM IsExpanded и у V IsExpanded - привязал.А зачем:
1. Добавить свойство в VM.
2. Добавить привязку данных V <=> VM.

Может проще дать логике ссылку на TreeViewItem? Разумеется, это не единственное решение, просто предлагаю об этом подумать. :-)
...
Рейтинг: 0 / 0
TreeViewItem
    #38601933
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Кuser7320Я привязываю. У VM IsExpanded и у V IsExpanded - привязал.А зачем:
1. Добавить свойство в VM.
2. Добавить привязку данных V <=> VM.

Может проще дать логике ссылку на TreeViewItem? Разумеется, это не единственное решение, просто предлагаю об этом подумать. :-)
Вы можете привести пример?.. Хотя, если это связано с вашей работой "Простое решение", где у вас предполагается настолько тесная связь между V и VM, что VM ссылается на V (а не наоборот, как в классике), то не надо. ))

Если вы дадите ВМ ссылку на В, то останется ли возможность привязывать несколько В к одной ВМ? Каким образом?

И что станет со всеми этими словами "меньше связность - лучше тестирование"?
...
Рейтинг: 0 / 0
TreeViewItem
    #38601951
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Если вы дадите ВМ ссылку на В, то останется ли возможность привязывать несколько В к одной ВМ? Каким образом?Конечно, нет. Если требуется такая возможность - используй классический MVVM на здоровье. :-) Но часто ли это надо?
user7320И что станет со всеми этими словами "меньше связность - лучше тестирование"?Тестировать надо модель, а она, обычно, на сервере. Впрочем, "пилите, Шура, пилите, они золотые..." :-)
...
Рейтинг: 0 / 0
TreeViewItem
    #38601958
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зы: Ещё раз обращаю внимание на фразу: "Это не единственное решение, просто предлагаю об этом подумать".
...
Рейтинг: 0 / 0
TreeViewItem
    #38602004
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Кuser7320Если вы дадите ВМ ссылку на В, то останется ли возможность привязывать несколько В к одной ВМ? Каким образом?Конечно, нет. Если требуется такая возможность - используй классический MVVM на здоровье. :-) Но часто ли это надо?
Ладно, дайте ссылку, где у вас пример с привязкой ВМ ко В. Или лучше словами простыми опишите, как вы это делаете.

Я вот примерно такой подход применил, когда надо было несколько модальных окон друг на друге показать:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
VM_Window
{
    Window w; // хранит ссылку на своё окно

    ShowChild()
    {
        VM_Window vmChild = new VM_Window();
    		
    	Window vChild = new Window();
    	vChild.DataContext = vmChild;
    	vChild.Owner = this.w;
    		
    	vmChild.w = vChild;
    		
    	vChild.ShowDialog();
    }
}


И для таких штук можно много вложенностей детей сделать.
...
Рейтинг: 0 / 0
TreeViewItem
    #38602020
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Ладно, дайте ссылку, где у вас пример с привязкой ВМ ко В.Это не у меня, это в WPF. :-)

Это любой Control+ControlTemplate или UserControl.

Тут описано моё видение MVVM, там же табличка с основными преимуществами и недостатками возможных подходов.
user7320Я вот примерно такой подход применил, когда надо было несколько модальных окон друг на друге показать. Тут описана работа с окнами. Но я не пойму вопроса. Модели окон связываются наиболее удобным способом: свойствами, событиями или ещё как. В чём интрига? :-)
...
Рейтинг: 0 / 0
TreeViewItem
    #38602253
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей К Тут описана работа с окнами. Но я не пойму вопроса. Модели окон связываются наиболее удобным способом: свойствами, событиями или ещё как. В чём интрига? :-)
Да ни в чём. Я просто сделал не по правилам, и боялся, что кто-нибудь увидит и скажет ай-яй-яй. ))

Ну, у вас примерно как у меня, только я сразу в DataContext данные пихаю, а не в метод-хелпер.

А когда вы делаете "установку содержимого окна" через

Код: c#
1.
2.
// Установка содержимого окна.
    result.Content = content; 



вы можете потом из этого content свойства раскидать по привязкам в замл-разметке этого окна? Без установки DataContext?

И это, вызов нескольких диалоговых окон одно из другого у вас нормально пройдёт?
...
Рейтинг: 0 / 0
TreeViewItem
    #38602275
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Алексей К Тут описана работа с окнами. Но я не пойму вопроса. Модели окон связываются наиболее удобным способом: свойствами, событиями или ещё как. В чём интрига? :-)
Да ни в чём. Я просто сделал не по правилам, и боялся, что кто-нибудь увидит и скажет ай-яй-яй. ))Забей на них. Делай как тебе сегодня удобнее. Не понравится - в новом проекте сделаешь "правильно". Заказчику пофиг как у тебя там написано, ему главное результат а не процесс.
user7320Ну, у вас примерно как у меня, только я сразу в DataContext данные пихаю, а не в метод-хелпер.Это да.

user7320А когда вы делаете "установку содержимого окна" через

Код: c#
1.
2.
// Установка содержимого окна.
    result.Content = content; 



вы можете потом из этого content свойства раскидать по привязкам в замл-разметке этого окна? Без установки DataContext?Могу, но это не требуется, поскольку Window является ContentControl-ом, и я в Window вставляю готовое содержимое. В самом Window у меня XAML-разметки нет.

user7320И это, вызов нескольких диалоговых окон одно из другого у вас нормально пройдёт?Да, проблем с этим никогда не было.
...
Рейтинг: 0 / 0
14 сообщений из 39, страница 2 из 2
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / TreeViewItem
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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