|
3 / 3 / 0
Регистрация: 23.12.2016
Сообщений: 273
|
||||||||||||||||
Отложенная загрузка ветвей TreeView через команды в MVVM09.04.2025, 14:42. Показов 3373. Ответов 32
Здравствуйте, помогите, пожалуйста, разобраться. Как сделать отложенную загрузку ветвей в TreeView.
Есть следующие классы сущностей (на названия не обращайте внимание изменены специально):
пробовал через тригеры привязаться к команде, но не получается получить именно TreeViewItem, чтобы взять из него необходимые данные
Нужно не только чтоб по событию вызывалась команда но еще и получить объект сам TreeViewItem чтобы по его Id загрузить дочерние элементы Есть еще вопрос по поводу съедает ли BitmapSource качество изображения, когда его создают из Bitmap?
0
|
||||||||||||||||
| 09.04.2025, 14:42 | |
|
Ответы с готовыми решениями:
32
WPF команды и MVVM. Часть 2. Всплытие команд. Реализация команды для списка элементов [WPF, Элд Хасп] Перебор всех ветвей в treeView
|
|
|
||||||
| 09.04.2025, 15:09 | ||||||
|
IIIIIIIIIgor, В TreeView есть ведь SelectedItem? Если да, то при его изменении делайте/грузите что вам нужно
0
|
||||||
|
3 / 3 / 0
Регистрация: 23.12.2016
Сообщений: 273
|
||
| 09.04.2025, 15:31 [ТС] | ||
|
или как-то можно чтобы в конкретном HierarchicalDataTemplate срабатывало это? и при раскрытии ветви SelectedItem не будет пустым, мы же на саму ветку не нажимали?
0
|
||
|
|
|
| 09.04.2025, 15:37 | |
|
IIIIIIIIIgor, Почитайте - Data binding to SelectedItem in a WPF Treeview.
Добавлено через 2 минуты IIIIIIIIIgor, Вот ещё варианты - WPF MVVM TreeView SelectedItem. Сам не пробовал ни этот, ни выше который...
0
|
|
|
3 / 3 / 0
Регистрация: 23.12.2016
Сообщений: 273
|
||||||||||||||||
| 09.04.2025, 15:54 [ТС] | ||||||||||||||||
|
Andrey-MSK, Сделал следующим образом, через команду а не свойство:
0
|
||||||||||||||||
|
|
|||||||||||||
| 09.04.2025, 16:15 | |||||||||||||
По второй ссылке там рассказано как сделать привязку.
0
|
|||||||||||||
|
3 / 3 / 0
Регистрация: 23.12.2016
Сообщений: 273
|
|||
| 09.04.2025, 16:32 [ТС] | |||
|
пробую также ошибка: Свойство "SelectedItem" не имеет доступного метода задания. И мне не нужно нажимать на саму ветку, чтобы пойти собирать доп объекты, мне надо чтоб нажали на значок раскрытия ветки и пошли выполняться действия
0
|
|||
|
|
|||||||||
| 09.04.2025, 16:50 | |||||||||
Тем более в первой ссылке есть пример как создать это свойство и работать с ним.Вот еще нечто похожее на ваше - Получить выбранный элемент в дереве TreeView MVVM Добавлено через 3 минуты
Или они опять его спрятали, как SelectedItems в DataGrid...
0
|
|||||||||
|
Модератор
|
|||
| 09.04.2025, 17:26 | |||
SelectedItemChanged, а событие TreeViewItem.Expanded.Но можно внедрить логику ленивой загрузки и в сами элементы на уровне VM или Модели. Но тогда простые DTO-шки не подойдут, нужны полноценные сущности со связанной логикой. Добавлено через 1 минуту BitmapSource не может находиться в ViewModel и тем более в Модели.
0
|
|||
|
3 / 3 / 0
Регистрация: 23.12.2016
Сообщений: 273
|
||||||||
| 09.04.2025, 17:28 [ТС] | ||||||||
0
|
||||||||
|
|
||
| 09.04.2025, 17:32 | ||
|
0
|
||
|
Модератор
|
|||||||
| 09.04.2025, 17:33 | |||||||
0
|
|||||||
|
|
|||||||
| 09.04.2025, 17:49 | |||||||
|
Добавлено через 11 минут IIIIIIIIIgor, Ну тогда это свойство можно вот так создавать и использовать - https://stackoverflow.com/a/5118406 Добавлено через 3 минуты IIIIIIIIIgor, И вот тут его поведение можно расширить до нужного вам
Можно сделать свойство, которое будет реагировать на раскрытие узла... Да можно вообще что угодно сделать, Behavior мощная штука
0
|
|||||||
|
298 / 260 / 108
Регистрация: 26.10.2012
Сообщений: 810
|
|||||||||||
| 10.04.2025, 08:30 | |||||||||||
|
Занимался такой же задачей.
Скажу, что из-за рекурсивного вызова await в TreeView все непросто. Код чувствителен к порядку вызова await и обновления Children. Дерево может обновиться асинхронно, но все и сразу; дерево может показать только самую первую свою ветвь; дерево может вообще не обновиться. Для нормального последовательного отображения новых узлов обязательно надо вызвать BindingOperations.EnableCollectionSynchr onization(node.Children) именно в главном потоке для каждого узла. Нормально получилось так (на примере дерева папок).
0
|
|||||||||||
|
3 / 3 / 0
Регистрация: 23.12.2016
Сообщений: 273
|
||||
| 10.04.2025, 08:36 [ТС] | ||||
|
0
|
||||
|
|
||
| 10.04.2025, 08:44 | ||
|
0
|
||
|
3 / 3 / 0
Регистрация: 23.12.2016
Сообщений: 273
|
|
| 10.04.2025, 08:51 [ТС] | |
|
на самом деле у меня не очень получается понять различия между сущности и DTO. я свои классы называю сущность. но вроде по определению они являются DTO объектами, так как в классах модели (или бизнес логики уже запутался как правильно) я их наполняю данными из базы, потом передаю в vm тот в окно и просто показываю данные, а потом буду брать некоторые данные для создания нового объекта.
Исходя из этого наверное я могу в эти классы добавить реализацию INPC
0
|
|
|
|
||
| 10.04.2025, 08:56 | ||
0
|
||
|
3 / 3 / 0
Регистрация: 23.12.2016
Сообщений: 273
|
||
| 10.04.2025, 09:04 [ТС] | ||
|
0
|
||
|
Модератор
|
||||
| 10.04.2025, 10:24 | ||||
|
Это без проблем можно сделать в Code Behind или Behavior, но вот как сделать с помощью InvokeCommandAction не подскажу. Я их редко использую, и в данный момент нет "под рукой" компа со Студией чтобы разобраться самому. Добавлено через 4 минуты Чтобы было понятно. Вот у вас есть файл картинки, который показывается стандартными windows инструментами. Формат неважно какой: bmp, jpg, png и т.д. Читаете полностью этот файл в массив байт и вот такой массив биндинг без проблем конвертирует в ImageSource. Добавлено через 7 минут Второй момент это "предназначенный только для передачи данных". Например, ваш Materials это только автосвойства. Если он используется только для обмена данными с Моделью, то это DTO.Но если он используется дальше в Модели для Контекста БД и удерживается в нём на отслеживании, то получается что у этого объекта есть логика отслеживания, хотя явно она и не прописана в самом типе Materials. И в таком случае его уже нельзя назвать DTO - это уже сущность.Так же есть ещё POCO - это классы в которых есть простая логика, но не зависящая от других объектов. Например если в Materials внедрить INPC, но использовать его только для обмена данными, то по сути это будет уже POCO.
0
|
||||
| 10.04.2025, 10:24 | |
|
Помогаю со студенческими работами здесь
20
Отложенная обработка событий Побочный эффект отложенной загрузки страницы (браузер перебрасывает пользователя в начало страницы) Нажатие на ветвь через Treeview и вывод в dataGridView Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица.
Задача: зафиксировать три левых колонки в отчете.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
/ / . . .
|
Настройки VS Code
Loafer 13.04.2026
{
"cmake. configureOnOpen": false,
"diffEditor. ignoreTrimWhitespace": true,
"editor. guides. bracketPairs": "active",
"extensions. ignoreRecommendations": true,
. . .
|
|
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2.
Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива.
Было так:. . .
|
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: реализовать контроль корректности заполнения дат назначения. . .
|
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html
Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
|
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача №1: при указании работ (справочник РаботыПоРемонтуСпецтехники),. . .
|