我在WPF中从listview扩展了一个控件。如果我使用自定义模板覆盖“模板”,则UI虚拟化不再存在。
有人可以帮助我将UI虚拟化与自定义模板一起使用。
我的ListView控件XAML
<controls:ListViewExtra ItemsSource="{Binding Path=POView}" ItemContainerStyleSelector="{StaticResource listViewItemStyleSelector}"
VirtualizingStackPanel.IsVirtualizing="true"
ScrollViewer.IsDeferredScrollingEnabled="True" VirtualizingStackPanel.VirtualizationMode="Recycling"
IsSynchronizedWithCurrentItem="True" Template="{StaticResource CustomListView2}"
>
<controls:ListViewEx.View>
<GridView ScrollViewer.VerticalScrollBarVisibility="Visible" ColumnHeaderContainerStyle="{StaticResource listViewHeaderStyle}">
<GridViewColumn Width="110" Header="" CellTemplate="{StaticResource cellTemplateButtons}" />
<GridViewColumn Header="Name" controls:GridViewHeaderRowPresenterEx.MinimumWidth="150" CellTemplate="{StaticResource cellTemplateName}" controls:ListViewEx.SortPropertyPath="Drug.Name" />
<GridViewColumn Header="Id" CellTemplate="{StaticResource cellTemplateDose}" Width="100"/>
</GridView>
</controls:ListViewExtra.View>
</controls:ListViewExtra>
模板“CustomListView2”如下。
<ControlTemplate x:Key="CustomListView2" TargetType="{x:Type ListView}">
<Border Name="Border">
<Grid>
<ScrollViewer Style="{StaticResource ListViewScrollViewer2}">
<ItemsPresenter/>
</ScrollViewer>
</Grid>
</Border>
</ControlTemplate>
任何帮助都将不胜感激。
答案 0 :(得分:1)
Have a look at this link. 如上所述,添加以下内容ScrollContentPresenter定义: CanContentScroll =&#34; {TemplateBinding CanContentScroll}&#34;。它现在正在运作。谢谢!
答案 1 :(得分:0)
因为您要覆盖ControlTemplate,所以您还要覆盖启用虚拟化的基础元素。将虚拟化控件(例如VirtualizingStackPanel)重新添加到ControlTemplate中应该可以让它再次运行。