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