我读到,当样式不正确时,ListBox
将失去其虚拟化。作为notacat 在这个问题中的回答,他的解决方案是可以的。
我意识到每当我将 ItemsPresenter 放入另一个容器中时,例如Grid
, Border
, ...
<ControlTemplate TargetType="ListBox">
<ScrollViewer x:Name="ScrollViewer"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
Background="{TemplateBinding Background}"
Foreground="{TemplateBinding Foreground}"
Padding="{TemplateBinding Padding}">
<StackPanel>
<TextBlock Text="{TemplateBinding MyText}" />
<ItemsPresenter/>
</StackPanel>
</ScrollViewer>
</ControlTemplate>
ListBox
将立即失去其虚拟化。但我确实想放置一个TextBlock
before ItemsPresenter
,而ScrollViewer只接受 1 个子元素。
如何处理?
更新:我看到这篇文章,Derek Lakin所做的是将其放置TextBlock
到ScrollViewer
模板中,但如何将其TextBlock
放入ScrollContentPresenter
?
P/S:我确实设置VirtualizingStackPanel
了ItemsPanel
我的ListBox
.