У меня есть элемент управления ListView WPF с ItemsSource, установленным в коллекцию экземпляров класса ViewModel. ListView имеет ItemTemplate с настраиваемой иерархией управления.WPF ListView - событие, когда элемент управления готов для итерации над отображаемыми элементами?
Мне нужно сделать некоторые вещи для элементов управления, созданных с помощью ItemTemplate, когда на самом деле отображается ListView (если он еще не виден), и все его элементы выложены (то есть, когда безопасно использовать ItemContainerGenerator.ContainerFromItem
).
Если я подписываюсь на ItemContainerGenerator.StatusChanged
, то при изменении статуса на GeneratorStatus.ContainersGenerated
в генераторе все еще нет элементов (?!? Как я могу быть уведомлен, когда ListView готов для итерации по фактическим элементам управления , которые привязаны к элементам, даже если ItemsSource изменен во время выполнения на существующем элементе управления?
Теперь я знаю, что может subcribe к событиям фактического контроляв шаблоне, но мне нужно знать, когда всех элементов управления элементов созданы, делая Stuf в ViewModel деталь не помогает мне так как мне нужно делать связанные с UI вещи, например анимации и т. д.
Приятный трюк с приложенным поведением, но он мне не поможет, так как он срабатывает per-listitem, кроме того, я думаю, что я уже могу достичь этого с помощью события datatemplate.control.loaded. Мне нужно событие, когда * все * элементов загружаются и выкладываются, так как мои анимационные эффекты зависят от количества элементов и их порядка. Я мог отслеживать «загруженный» каждый элемент и уменьшать счетчик до тех пор, пока он не достигнет нуля, но это будет последним средством. –