WPF:control.ItemContainerGenerator.Status是NotStarted。我怎么告诉它现在开始?

时间:2010-03-19 22:50:49

标签: wpf

我的控件.ItemContainerGenerator.Status是NotStarted。我如何告诉它现在开始并等到它完成?

3 个答案:

答案 0 :(得分:9)

如果你进行一些同步操作,你可能想要手动启动生成器 - 我必须生成结果视图以在页面上进行分块之前对其进行测量。

   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 :(得分:1)

绑定并显示ItemsControl。 ItemContainerGenerator将启动并生成项目作为数据绑定周期的一部分。

如果您确实需要手动启动生成器,则可以通过调用IItemContainerGenerator.StartAt来执行此操作。这是一个显式的接口实现,因此您需要转换ItemsControl.ItemContainerGenerator属性,例如((IItemContainerGenerator)(listBox.ItemContainerGenerator)).StartAt(...);。但是在应用程序代码中很少需要手动启动生成器。

答案 2 :(得分:0)

您可以使用

ItemContainerGenerator.StatusChanged

状态更改时要处理的事件