WPF - нужно событие для при виртуализацииStackPanel создает элементы для ListView

StackOverflow https://stackoverflow.com/questions/3983336

Вопрос

Есть ли способ сказать, когда контейнеры будут завершены для просмотра для ListView?

Подробное объяснение того, что я сделал до сих пор

У меня есть элемент управления ListView, который имеет DataTemplate в одном из его столбцов, которые содержат элемент управления флажок .. Я выяснил, как динамически получить доступ к флажок, используя объект, к которому связан список.

                ListViewItem lItem = (ListViewItem)ListView.ItemContainerGenerator.ContainerFromItem(trackToHandle);
                CheckBox checkBoxToHandle = FindChild<CheckBox>(lItem, "CheckBox");

Проблема в том, что флажки «сброс» (сброшены »(записаться) всякий раз, когда я прокручиваю слишком далеко или всякий раз, когда я сортирую столбцы. Я выяснил, что это потому, что виртуализацияStackPanel выпил только контейнеры для этих листов, которые были видимыми (или почти видимыми) .. и потому, что флажок находится внутри таблицы данных, определенного в XAML, он выброшен каждый раз, когда он выброшен или когда список отсортирован.

Создав об этом, создав отдельный список флажков и используя событие фактических флажков «Нажмите», чтобы изменить состояние соответствующего флажка в моем списке .. Затем сделал небольшой метод, чтобы перейти изменить состояние всех видимых флажков, когда Пользовательские прокрутки ... в результате, похоже, он должен иметь в первую очередь.

За исключением случаев, когда я сортирую столбцы. Я попытался сделать это повторно сделать флажки (как и раньше) сразу после того, как он отсортировал столбец, но он не сработал. Мое лучшее предполагает, что он не сразу же делает контейнеры после того, как я сортирую ..

Есть ли способ сказать, когда контейнеры будут завершены для просмотра для ListView?

Это было полезно?

Решение

Если вы связываете свои флажки ischecked свойство для логического свойства в контексте вашего данных, то у вас не будет этой проблемы.

Вся целью виртуализацииStackPanel снижает использование памяти, не создавая listiTem, если не требуется.

По сути, вам нужно переместить сторону данных флажков от контроля.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top