У меня есть ListBox, и мне нужно, чтобы установить его ControlTemplate на виртуализацию 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
это относится к виртуализации WrapPanel, Virtualization WrapPanel используется в ControlTemplate в ListBox. – simo