Есть ли какой-нибудь способ сказать, когда контейнеры заканчиваются для ListView?
Подробное объяснение того, что я сделал до сих пор
У меня есть элемент управления ListView, в одном из столбцов которого содержится DataTemplate, содержащий элемент управления CheckBox. Я выяснил, как динамически обращаться к CheckBox с помощью объекта, с которым связан ListView.
ListViewItem lItem = (ListViewItem)ListView.ItemContainerGenerator.ContainerFromItem(trackToHandle);
CheckBox checkBoxToHandle = FindChild<CheckBox>(lItem, "CheckBox");
Проблема в том, что CheckBoxes "сбрасываются" (становятся не проверенными) всякий раз, когда я прокручиваю слишком далеко или когда сортирую столбцы.
Я понял, что это потому, что VirtualizingStackPanel выплевывал контейнеры только для тех элементов ListViewItems, которые были видимы (или почти видимы).
А поскольку CheckBox находится внутри DataTemplate, определенного в XAML, он выбрасывается каждый раз, когда выходит из поля зрения или сортируется список.
Я справился с этим, создав отдельный список CheckBoxes и используя фактическое событие "click" CheckBoxes, чтобы изменить состояние соответствующего CheckBox в моем списке ... затем сделал небольшой метод, чтобы изменить состояние всех видимых Флажки всякий раз, когда пользователь прокручивает ... в результате это выглядит так, как будто это должно быть на первом месте.
За исключением случаев, когда я сортирую столбцы.
Я попытался заставить его заново выполнить CheckBoxes (как прежде) сразу после того, как он отсортировал столбец, но он не работал.
Мое лучшее предположение, что он не сразу создает контейнеры после сортировки ..
Есть ли какой-нибудь способ сказать, когда контейнеры заканчиваются для ListView?