|
11 / 9 / 5
Регистрация: 09.10.2019
Сообщений: 84
|
|||||||||||
Методы ArrangeOverride и MeasureOverride для позиционирования элементов10.01.2020, 14:50. Показов 2284. Ответов 33
Метки wpf controls (Все метки)
Добрый день, народ! В чем проблема не знаю как правильно позиционировать элементы в Panel и достичь аналогичного результата как на картинке слева. Думаю, что надо раскурочить методы ArrangeOverride и MeasureOverride, но не знаю как(((
Может кто сталкивался или подскажет куда копать? Методы ArrangeOverride и MeasureOverride в классе VirtualizingWrapPanel Кликните здесь для просмотра всего текста
Вот использую
0
|
|||||||||||
| 10.01.2020, 14:50 | |
|
Ответы с готовыми решениями:
33
Есть ли функция для резервации определенного места на сайте для постоянного позиционирования элемента?
|
|
11 / 9 / 5
Регистрация: 09.10.2019
Сообщений: 84
|
|
| 11.01.2020, 19:01 [ТС] | |
|
Да они разные! Только в рамках группировки одинаковые.
0
|
|
|
11 / 9 / 5
Регистрация: 09.10.2019
Сообщений: 84
|
||
| 12.01.2020, 15:05 [ТС] | ||
|
Google Фото я думаю, что там иначе все построено, так как это вебсайт и там другие компоненты верстки, но если попытаться реализовать на WPF наверное надо смотреть ListView с группировкой по дате и VirtualizingWrapPanel , а ItemTemplate это еще один ListView без группировки на VirtualizingWrapPanel. Блин это еще те танцы с бубнами, потом бороться с производительностью не понятно как это себя поведет, но можно попробовать. Кстати на счет производительности нашел реализованный VirtualizingObservableCollection https://www.nuget.org/packages... ollection/ еще не опробовал, так как придется пару моих классов переписать по загрузке изображений. Превосходство в том, что я и хотел LazyLoad о преимуществах данного подхода думаю не стоит говоить
0
|
||
|
Модератор
|
|||
| 12.01.2020, 15:14 | |||
|
По высоте исходных изображений в строке? Явно нет - они много больше. Что берётся за высоту строки? Если это задать, то остальное упрощается. У всех Image в строке привязать высоту к этому значению. А ширину ограничить каким-нибудь пропорциональным значением. Получатся все изображения одной высоты. Ширина согласно исходным пропорциям, но не более заданной. Добавлено через 1 минуту Не проверял, но так понял документацию.
0
|
|||
|
11 / 9 / 5
Регистрация: 09.10.2019
Сообщений: 84
|
||
| 12.01.2020, 15:21 [ТС] | ||
|
0
|
||
|
Модератор
|
||
| 12.01.2020, 15:31 | ||
|
Загрузили в ListBox 10 000 ссылок на изображения. В его шаблоне элемента ссылка визуализируется через привязку в Image. В окно выводится первые 10 элементов. Но по факту, он грузит сразу все 10_000 элементов. Так было? Или память начинает "съедаться" после скрулла по ListBox?
0
|
||
|
11 / 9 / 5
Регистрация: 09.10.2019
Сообщений: 84
|
||
| 12.01.2020, 15:31 [ТС] | ||
|
0
|
||
|
11 / 9 / 5
Регистрация: 09.10.2019
Сообщений: 84
|
||
| 12.01.2020, 15:42 [ТС] | ||
|
Вот что MSDN пишет Создание большого количества элементов пользовательского интерфейса, если на экране может быть недостаточное количество элементов, может негативно сказаться на производительности приложения. VirtualizingStackPanel Например, выражение ListBox ItemContainerGenerator ListViewвычисляет количество видимых элементов и работает с элементом from (например, или) для создания элементов пользовательского интерфейса только для видимых элементов. ItemsControl Так что необходимо использовать VirtualizingStackPanel, но так как там компоновка в один столбец или строку, то пишут кастомный VirtualizingWrapPanel, какой у меня и кстати это самый приличный, что видел другие реализации полный трэш, тормозит, дергается и т.д.
0
|
||
|
Модератор
|
|
| 12.01.2020, 15:44 | |
|
Там же суть в чём.
Элемент визуализируется только когда он в видимой части окна. Как он визуализируется задаётся шаблоном данных. Поэтому если в источнике находятся ссылки на изображения, то ничего кроме этих ссылок не грузится. Сами ссылки и память под них задаётся в VM. LisBox (ListView и DataGrid) те ссылки которые должны быть отображены визуализирует используя шаблон. Получает по этому шаблону Image. Если уходит ссылка с экрана, то её Image сразу выгружается. Это можно проверить добавив обработчики Image.Loaded и Image.Unloaded. А вот если вы создаёте список не ссылок, а изображений, то здесь конечно нужная "ручная" настройка ленивой загрузки.
0
|
|
|
Модератор
|
||
| 12.01.2020, 15:53 | ||
|
Когда элемент не нужен убирается сильная ссылка на него. Но сам он остаётся в памяти. Если системе нужна память под что-то другое, она отправляет сборщика мусора. Сборщик очищает не всю память сразу. Он чистит по мере необходимости в свободной памяти. Сначала за счёт объектов на которых вообще нет ссылок. Потом за счёт тек на которых есть слабые ссылки, но нет сильных. Когда обращаетесь к объекту по слабой ссылки, проверяется его наличие в памяти. Если мусорщик ещё память под объект не очистил, то сразу возвращается сильная ссылка на этот объект. Если очистил, то объект заново грузится. Поэтому при использовании слабых ссылок память процесса будет расти. Но насколько это зависит от того как позволит система.
0
|
||
|
11 / 9 / 5
Регистрация: 09.10.2019
Сообщений: 84
|
|||||||
| 12.01.2020, 16:00 [ТС] | |||||||
|
Добавлено через 4 минуты Все равно заполняет память без остановки. Из VM я убрал вообще ImageSource Image остался только Uri
0
|
|||||||
|
Модератор
|
||||||||||||
| 12.01.2020, 16:23 | ||||||||||||
|
И добавьте обработчики загрузки и выгрузки. Проверьте как загружаются/выгружаются Image
По идее, когда изображение уйдёт с экрана оно должно выгрузится. Но возможно не сразу - это зависит от системы и её потребности в памяти. Добавлено через 14 минут Unsafe, я проверил у себя на простом примере
Загружаются только те изображения которые нужны на экране. Выгружаются не сразу, а после пролистывания на экран или чуть больше. Причем выгрузка - это не значит освобождения памяти! Освободится она только если это затребует система. А так если возвращается скрулл назад к уже выгруженным элементам, то если они ещё в памяти, то просто возвращается ссылка на них.
0
|
||||||||||||
| 12.01.2020, 16:23 | |
|
Свойства и методы элементов управления для пользовательской формы.
Создать стек сплошным представлением и продемонстрировать методы класса для стека из 15 элементов Разработать собственный класс, содержащий методы для нахождения количества отрицательных элементов массива
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
|
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ
Основная суть и тезисы по измерениям:
0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема.
Объект не может перемещаться в 0D.
1D (Первое измерение):. . .
|
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek
ВВЕДЕНИЕ
Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
|
|
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
|
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2.
Задача:
Обеспечить запись документа в регистр сведений независимо от. . .
|
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется.
Ну как вам?
|
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания
источниках данных и элементов формы(текстовые поля и метки), опирается все
это на технологию событий и мета. . .
|