|
0 / 0 / 0
Регистрация: 03.09.2022
Сообщений: 69
|
||||||||||||||||||||||||||
Вложенные View элементы. Взаимодействие с ViewModel04.03.2024, 14:49. Показов 2447. Ответов 47
Задача: изначально неизвестно количество expander и button внутри него. Они будут извлекаться из JSON файла и отображаться во view (позже добавится кнопка обновления данных, в случае каких-либо изменений во время выполнения программы). Предварительная их инициализация содержится в модельном классе ниже. Можно ли сделать шаблон через xml или всё же необходимо будет использовать код в данном случае? В будущем, вероятно возникнет вложенность ещё одного expander, но думаю, всё будет по аналогии...
0
|
||||||||||||||||||||||||||
| 04.03.2024, 14:49 | |
|
Ответы с готовыми решениями:
47
Как зарегистрировать ViewModel через Autofac, создав между ViewModel и нужным View DataContext связь? |
|
Модератор
|
|||||||||||||||||||||||||||||||||||||
| 05.03.2024, 01:24 | |||||||||||||||||||||||||||||||||||||
Сообщение было отмечено Dmitry12329 как решение
Решение
CollectionViewSource для фильтрации по ExpanderDataId:
1
|
|||||||||||||||||||||||||||||||||||||
|
0 / 0 / 0
Регистрация: 03.09.2022
Сообщений: 69
|
|
| 05.03.2024, 13:40 [ТС] | |
|
Элд Хасп, а для чего нам нужна фильтрация по ExpanderDataId? (да и вообще, для чего нужна фильтрация? Просто с ней не сталкивался ещё). А также для чего нам нужны Id на кнопках (для номинации кнопок, как я понял) и expander?
0
|
|
|
Модератор
|
||||
| 05.03.2024, 15:36 | ||||
|
Это альтернативный способ формирования иерархического представления для реляционного источника. Добавлено через 2 минуты
0
|
||||
|
0 / 0 / 0
Регистрация: 03.09.2022
Сообщений: 69
|
|
| 05.03.2024, 18:01 [ТС] | |
|
Элд Хасп, хм, даже так. Просто почему-то мне казалось, что в моём случае работает это по-другому. Я извлекаю первый JSON в котором название expander, это название самого файла, а то, что внутри, это информация о кнопках, они по структуре похожи, только свойствами полей отличаются. И получается, что прочитав один файл (или прочитав всё,передать коллекцию expander), модель передаёт это VM, а VM передаëт view и так последовательно, пока все файлы не будут прочитаны. Видимо, мой подход не совсем корректен был... Но ладно, я получил информацию о view необходимую. Как всё совмещу, загружу на github и скину сюда
0
|
|
|
Модератор
|
||
| 05.03.2024, 18:10 | ||
|
Вот только работать с ней тоже будет не просто. Например вам нужно найти какой-то URL. Поиск по линейной коллекции намного проще реализовать чем по дереву.
0
|
||
|
0 / 0 / 0
Регистрация: 03.09.2022
Сообщений: 69
|
|
| 05.03.2024, 18:13 [ТС] | |
|
Элд Хасп, понял. Просто мне там, по хорошему, ничего искать не придётся, просто спарсить данные и всë. Но попробую реализовать всё с учётом Ваших комментариев, а там, как выйдет... А где и что можно изучить/ознакомиться по структурам данных?
0
|
|
|
364 / 296 / 55
Регистрация: 08.04.2020
Сообщений: 1,175
|
||
| 05.03.2024, 18:14 | ||
|
Чем это хуже или чем лучше использовать линейную структуру не подскажу. Ибо я долгое время занимался не связанными вещами с wpf, бд и т.п. И в это не вникал пока что. Но советую посмотреть видео какое нибудь, почитать статьи сравнения обоих подходов. Если собрались с этим работать, вы обязаны и то и то сравнить хотя бы в теории)
1
|
||
|
Модератор
|
|||
| 05.03.2024, 18:20 | |||
|
Если есть возможность, то лучше перейти от хранения в файловой системе к БД. К стати, обратите внимание, что файловая система - это тоже древовидное ПРЕДСТАВЛЕНИЕ физически линейного диска. Если нет возможности перехода на БД (ну, задание такое - и ничего с этим не сделаешь), то можно, конечно, и файловую систему использовать. В вашем случае, вы читаете все файлы какой-то папки. И каждый файл это и есть "булочка"? А в файле информация для кнопок булочек - верно? Добавлено через 3 минуты Если от файловой системы никуда не деться, то надо оставить дерево. Просто по вашему примеру я этого не понял.
1
|
|||
|
0 / 0 / 0
Регистрация: 03.09.2022
Сообщений: 69
|
|
| 05.03.2024, 18:21 [ТС] | |
|
Элд Хасп, в принципе, ничего не мешает взять SQLite тогда в таком случае (вероятно много позже, данные будут извлекаться из google.sheet), просто казалось, что JSON более легковесен в использовании такой небольшой задачи и логичен в использовании. Да, в парке содержатся файлы условные: булочка1.json, булочка2.json, булочкаn.json. Название их, это заголовок expander. Внутри каждой булочки содержится информация о кнопках, название и ссылка. Количество кнопок может быть разным, но по структуре они однотипны
0
|
|
|
364 / 296 / 55
Регистрация: 08.04.2020
Сообщений: 1,175
|
|||
| 05.03.2024, 18:27 | |||
|
Добавлено через 2 минуты
0
|
|||
|
0 / 0 / 0
Регистрация: 03.09.2022
Сообщений: 69
|
|
| 05.03.2024, 18:28 [ТС] | |
|
xellan24rus, бесспорно, но хочется сделать локальную копию, чтоб постоянно не извлекать данные из сети
0
|
|
|
Модератор
|
|||||||
| 05.03.2024, 18:29 | |||||||
|
А вот обязательности применения моей реализации нет. Можно и дерево использовать, тем более, что вложенности только два уровня. Если редактирования не предусматривается, то реализация примерно должна быть такой:
0
|
|||||||
|
0 / 0 / 0
Регистрация: 03.09.2022
Сообщений: 69
|
|
| 05.03.2024, 18:32 [ТС] | |
|
Элд Хасп, тогда встаёт вопрос неочевидный, стоит ли все булочки хранить в одной таблице или создать множество таблиц
0
|
|
|
364 / 296 / 55
Регистрация: 08.04.2020
Сообщений: 1,175
|
||
| 05.03.2024, 18:33 | ||
|
0
|
||
|
Модератор
|
|||||||||||||||||||||||||||||||
| 05.03.2024, 22:35 | |||||||||||||||||||||||||||||||
Сообщение было отмечено Dmitry12329 как решение
Решение
Dmitry12329, вот такая реализация:
0
|
|||||||||||||||||||||||||||||||
|
0 / 0 / 0
Регистрация: 03.09.2022
Сообщений: 69
|
||||||
| 06.03.2024, 00:20 [ТС] | ||||||
|
Элд Хасп, всё же возник ещё вопрос. Хочется прикрепить сбоку ScrollViewer, так как при раскрытии содержимого, оно может стать нечитаемым. Но проблема в том, что необходимо использовать статическую компоновку, которая подстраивается под размеры окна. (как я понял, в стиле ScrollViewer содержится DataGrid, у которого размеры явно не указаны и из-за этого возникает проблема).
То есть хочется сделать отступ со всех сторон по 10. Делаю через Margin, но при этом Scroll неактивен (ибо StackPanel подстраивается под размеры содержимого автоматически. Необходимо создавать свой элемент?). Немного плохого кода ниже:
0
|
||||||
|
364 / 296 / 55
Регистрация: 08.04.2020
Сообщений: 1,175
|
|
| 06.03.2024, 04:24 | |
|
Dmitry12329, DataGrid находится не в стиле ScrollViewer.
DataGrid расположен как контент ScrollViewer(a) чтобы изменить его, вам нужно изменить компоновку таблицы для ScrollViewer. Найдите ScrollViewer с именем x:Name="DG_ScrollViewer" по ссылке в этом шаблоне https://learn.microsoft.com/ru... esktop-4.8
0
|
|
|
0 / 0 / 0
Регистрация: 03.09.2022
Сообщений: 69
|
||||||
| 06.03.2024, 18:06 [ТС] | ||||||
|
Элд Хасп, xellan24rus, всё оказалось куда проще, чем я думал. Проблема была в выборе контейнера, StackPanel подстраивается под содержимое. Но теперь возникла другая проблема, я хотел бы, чтобы ползунок сразу не принимал своё статичное положение (положение 1). А изменялся вместе с Expander, до достижения статичного положения (положение 1)
0
|
||||||
|
364 / 296 / 55
Регистрация: 08.04.2020
Сообщений: 1,175
|
|
| 06.03.2024, 19:17 | |
|
Dmitry12329, можете нарисовать пример. Не совсем понял что вам нужно.
0
|
|
|
0 / 0 / 0
Регистрация: 03.09.2022
Сообщений: 69
|
||||||
| 07.03.2024, 00:06 [ТС] | ||||||
|
xellan24rus, Элд Хасп, сейчас всё как на картинке 1. Зафиксирован ScrollViewer там, где нужно. Но на начальном этапе я хочу разместить его наравне с содержимым внутри окна. Когда раскрываются expander и постепенно движутся к концу места, ScrollViewer двигается вместе с ним, пока не достигнет финальной точки (либо будет скрыт до этого времени). Позже визуальная составляющая изменится.
Кстати, изменил шаблоны элементов, где их лучше хранить, чтоб не делать сильно громоздким view? Не знаю, сильно ли хорошо, но для того, чтобы нарисовать линию под Header expander меняю свойство Opacity...
0
|
||||||
| 07.03.2024, 00:06 | |
|
Вложенные коллекции и viewmodel Binding View к ViewModel LineGeometry + Model-View-ViewModel Определить View по типу ViewModel
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Нейтральные знания ..., ... чистая наука. Пока что-то проходит модерацию на Хабре, стоит развить мысль ...
Hrethgir 20.07.2026
К таким радикальным взглядам я конечно в той публикации не приходил, но чтобы скоротать вечер, решил углубиться немного.
1. Почему показания термометра заряжены целью?
Цель заложена в самом. . .
|
Установка нескольких штампов электронной подписи в строго определенных местах файла docx
ВладимирСамохин 19.07.2026
(В!) Работа с Электронной подписью - это неотъемлемая часть современного документооборота. Но что делать, если нужно поставить несколько штампов электронной подписи в строго определенных местах. . .
|
сукцессия 35. Научная статья о проделанной работе
anaschu 19.07.2026
Написал в формате латекс и пдф
|
Вангую, что это не пройдёт модерацию, и на неделе я запущу свой сервер.
Hrethgir 19.07.2026
Эта публикация сейчас в песочнице и ждёт приглашения.
https:/ / habr. com/ ru/ sandbox/ 295048/
По ссылке 403. Не очень информативно такую ссылку постить.
Запись от Usaga размещена Сегодня в 06:46 . . .
|
|
сукцессия 33. открытые вопросы от клауде
anaschu 19.07.2026
"Что накопилось за эту часть А — тринадцать правок, из которых шесть пришли из ваших вопросов и каждая оказалась реальной ошибкой, а не калибровкой: односторонний симбиоз, отсутствующий листопад,. . .
|
32 сукцессия
anaschu 19.07.2026
сукцессия 28‑мерное ядро стабилизировано
Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не «подкручивает» сходимость —. . .
|
сукцессия 31: модель микоризы - это модель ещё нескольких явлений, социальных и экономических
anaschu 18.07.2026
Теория «Всего»: апдейт v1. 1. 2 — 28‑мерное ядро стабилизировано
Коллеги, фиксирую разбор инженерных правок и их изоморфную проекцию на экономику, меметику и половой отбор. Модель теперь не. . .
|
сукцессия 30. Массив проверяющих друг друга моделей
anaschu 18.07.2026
Архитектура сети взаимопроверяющих моделей микоризной сукцессии (v2. 0)
Развитие тензорного ОДУ-ядра и создание кросс-платформенного калибровочного полигона
Уважаемые коллеги!
В продолжение. . .
|