Reputation: 6868
I have a control extended from listview in WPF. If I override "Template" using a custom template, the UI virtualization is no longer exists.
Could somebody help me to have UI virrtualization along with custom template.
My ListView Control 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>
And the template "CustomListView2" is as follows.
<ControlTemplate x:Key="CustomListView2" TargetType="{x:Type ListView}">
<Border Name="Border">
<Grid>
<ScrollViewer Style="{StaticResource ListViewScrollViewer2}">
<ItemsPresenter/>
</ScrollViewer>
</Grid>
</Border>
</ControlTemplate>
Any help would be appreciated.
Upvotes: 0
Views: 2161
Reputation: 6868
Have a look at this link. As it is mentioned, ADD FOLLOWING INTO ScrollContentPresenter definition: CanContentScroll="{TemplateBinding CanContentScroll}". It is working now. Thank you!
Upvotes: 1
Reputation: 686
Because you're overriding the ControlTemplate, you're also overriding the underlying elements that enable virtualization. Re-adding virtualizing controls (such as the VirtualizingStackPanel) into your ControlTemplate should get it working again.
This similar-but-not-exactly-the-same thread may help.
Upvotes: 0