Остановка виртуализации пользовательского интерфейса при использовании шаблона для просмотра - PullRequest
0 голосов
/ 29 февраля 2012

У меня есть элемент управления, расширенный из списка в WPF.Если я переопределю «Шаблон» с помощью пользовательского шаблона, виртуализация пользовательского интерфейса больше не будет существовать.

Может ли кто-нибудь помочь мне выполнить виртуализацию пользовательского интерфейса вместе с пользовательским шаблоном.

Мой элемент управления 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>

Любая помощь будет оценена.

Ответы [ 2 ]

1 голос
/ 01 марта 2012

Посмотрите на эту ссылку. Как уже упоминалось, ДОБАВИТЬ СЛЕДУЮЩЕЕ В определение ScrollContentPresenter: CanContentScroll = "{TemplateBinding CanContentScroll}".Это работает сейчас.Спасибо!

0 голосов
/ 29 февраля 2012

Поскольку вы переопределяете ControlTemplate, вы также переопределяете базовые элементы, которые включают виртуализацию.Повторное добавление виртуализирующих элементов управления (таких как VirtualizingStackPanel) в ваш ControlTemplate должно заставить его работать снова.

Этот похожий, но не точно такой же поток может помочь.

...