我有一個列表框,我需要它的控件模板設置爲虛擬WrapPanel這是一個擴展VirtualizingPanel,使用樣式,看起來像這樣一類:爲什麼ItemContainerGenerator返回null?
<Style TargetType="{x:Type ListBox}" x:Key="PhotoListBoxStyle">
<Setter Property="Foreground" Value="White" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListBox}" >
<s:VirtualizingVerticalWrapPanel>
</s:VirtualizingVerticalWrapPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
現在,虛擬化WrapPanel的私有方法下面我嘗試訪問this.ItemContainerGenerator,但我得到空值,任何想法有什麼問題?
private void RealizeFirstItem()
{
IItemContainerGenerator generator = this.ItemContainerGenerator;
GeneratorPosition pos = generator.GeneratorPositionFromIndex(0);
using (generator.StartAt(pos, GeneratorDirection.Forward))
{
UIElement element = generator.GenerateNext() as UIElement;
generator.PrepareItemContainer(element);
this.AddInternalChild(element);
}
}
「this.ItemContainerGenerator」是否意味着Listbox? – Ragunathan 2010-07-20 12:02:16
這是指Virtualizing WrapPanel,虛擬化WrapPanel用在ListBox的ControlTemplate中 – simo 2010-07-22 06:52:37