0

WPF のリストビューから拡張されたコントロールがあります。カスタム テンプレートを使用して「テンプレート」をオーバーライドすると、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>

どんな助けでも大歓迎です。

4

2 に答える 2

1

このリンクを見てください。 言及されているように、以下を ScrollContentPresenter 定義に追加します: CanContentScroll="{TemplateBinding CanContentScroll}". それは今働いています。ありがとうございました!

于 2012-02-29T21:03:27.833 に答える
0

ControlTemplate をオーバーライドしているため、仮想化を有効にする基になる要素もオーバーライドしています。仮想化コントロール (VirtualizingStackPanel など) を ControlTemplate に再度追加すると、再び機能するようになります。

この似ているがまったく同じではないスレッドが役立つ場合があります。

于 2012-02-29T19:46:31.187 に答える