WPF: control.ItemContainerGenerator.Status не запускается. Как мне сказать, чтобы начать сейчас? - PullRequest
4 голосов
/ 20 марта 2010

Мои элементы управления .ItemContainerGenerator.Status не запущен. Как мне сказать, чтобы он начал сейчас и ждал, пока он не будет завершен?

Ответы [ 3 ]

9 голосов
/ 04 июля 2010

Возможно, вы захотите запустить генератор вручную, если выполняете какую-то синхронную операцию - мне пришлось сгенерировать представление результатов, чтобы измерить его, прежде чем разбивать его на страницы.

   IItemContainerGenerator generator = (child as ListContent).ItemContainerGenerator;
   GeneratorPosition position = generator.GeneratorPositionFromIndex(0);
   using (generator.StartAt(position, GeneratorDirection.Forward,true))
   {
                        foreach (object o in (child as ListContent).Items)
                        {
                            DependencyObject dp = generator.GenerateNext();
                            generator.PrepareItemContainer(dp);
                        }
   }
1 голос
/ 20 марта 2010

Свяжите и покажите ItemsControl. ItemContainerGenerator запустит и сгенерирует элементы как часть цикла привязки данных.

Если вам действительно нужно вручную запустить генератор, вы можете сделать это, вызвав IItemContainerGenerator.StartAt. Это явная реализация интерфейса, поэтому вам необходимо привести свойство ItemsControl.ItemContainerGenerator, например, ((IItemContainerGenerator)(listBox.ItemContainerGenerator)).StartAt(...);. Но запуск кода вручную в коде приложения крайне необходим.

0 голосов
/ 25 декабря 2011

Вы можете использовать

ItemContainerGenerator.StatusChanged

событие для обработки при изменении статуса

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...