2010-03-19 15 views

回答

1

綁定並顯示ItemsControl。 ItemContainerGenerator將作爲數據綁定週期的一部分啓動並生成項目。

如果您確實需要手動啓動生成器,則可以通過調用IItemContainerGenerator.StartAt來完成。這是一個明確的接口實現,因此您需要投射ItemsControl.ItemContainerGenerator屬性,例如((IItemContainerGenerator)(listBox.ItemContainerGenerator)).StartAt(...);。但是在應用程序代碼中手動啓動生成器非常少見。

+0

唉,這不會做我想要的。雖然確實開始物品生成,但它不會一直等到它們完成。 – 2010-03-20 05:34:19

+0

我想你可以輪詢GeneratorStatus.ContainersGenerated,但這取決於你想要做什麼。 – itowlson 2010-03-20 08:24:33

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); 
         } 
    } 
0

您可以使用

ItemContainerGenerator.StatusChanged 

事件來處理,當狀態發生變化

相關問題