0

スムーズにスクロールできるリストビュー (5,000 アイテム以上) を作成しようとしています。「virtualizationmode = Recycling」がうまくいくという解決策をinetで見つけました。

古いアプリでグリッドビューを使用していたので、完全に迷っています。別の投稿で読んだように、リストを仮想化するために、グリッドビューを使用できなくなりました。

どうすればそれを機能させることができますか?observalcollection を使用してアイテムをバインドしたいのですが、ヘッダーが必要です。

グリッドビューを使用した古いリストビューは次のとおりです。

<ListView x:Name="ListView_Main" Grid.Column="4" Grid.RowSpan="18" BorderBrush="#FFE87E00" Foreground="#FFE87E00" Background="Transparent" VirtualizingStackPanel.IsVirtualizing="true"  VirtualizingStackPanel.VirtualizationMode="Recycling">
                <ListView.View>
                    <GridView x:Name="GridView_ListHeader" AllowsColumnReorder="False">
                        <!--CheckBox-->
                        <GridViewColumn x:Name="GridViewColumn_Check" Width="25" Header=""><GridViewColumn.CellTemplate><DataTemplate><StackPanel>
                            <!---Tag = Index-->
                            <CheckBox IsChecked="{Binding Checked}" Tag="{Binding Index}"/></StackPanel></DataTemplate></GridViewColumn.CellTemplate>
                        </GridViewColumn>

                        <!--CheckImage-->
                        <GridViewColumn x:Name="GridViewColumn_CheckFake" Width="25" Header=""><GridViewColumn.CellTemplate><DataTemplate><StackPanel>
                                        <Grid Height="17" Width="17" VerticalAlignment="Center" HorizontalAlignment="center">
                                            <Canvas Background="{Binding Color}" Margin="3" Cursor="Hand" Tag="{Binding Index}" MouseLeftButtonDown="Canvas_ListIcon_MouseLeftButtonDown" MouseEnter="Canvas_ListIcon_MouseEnter" MouseLeave="Canvas_ListIcon_MouseLeave"><Canvas.OpacityMask>
                                                    <ImageBrush Stretch="UniformToFill" ImageSource="{Binding ImageCheckbox}" RenderOptions.BitmapScalingMode="NearestNeighbor" RenderOptions.EdgeMode="Aliased"/></Canvas.OpacityMask></Canvas></Grid></StackPanel></DataTemplate></GridViewColumn.CellTemplate>
                        </GridViewColumn>

                        <!--Source-->
                        <GridViewColumn x:Name="GridViewColumn_Icon"  Header="" Width="25"><GridViewColumn.CellTemplate><DataTemplate><StackPanel>
                                        <Grid Height="17" Width="17" VerticalAlignment="Center" HorizontalAlignment="center">
                                            <Canvas Background="{Binding Color}" Tag="{Binding Index}" Margin="3" MouseEnter="Canvas_SourceIcon_MouseEnter" MouseLeave="Canvas_SourceIcon_MouseLeave"><Canvas.OpacityMask>
                                                    <ImageBrush ImageSource="{Binding ImageSource}" Stretch="UniformToFill" RenderOptions.BitmapScalingMode="NearestNeighbor" RenderOptions.EdgeMode="Aliased"/></Canvas.OpacityMask></Canvas></Grid></StackPanel></DataTemplate> </GridViewColumn.CellTemplate>
                        </GridViewColumn>

                        <!--Pos-->
                        <GridViewColumn DisplayMemberBinding="{Binding Position}" x:Name="GridViewColumn_Pos" Width="50" Header="Pos"/>
                            <!--Entry-->
                        <GridViewColumn DisplayMemberBinding="{Binding Id}" x:Name="GridViewColumn_Entry" Width="200" Header="Eingabe"/>
                        <!--Sap-->
                        <GridViewColumn DisplayMemberBinding="{Binding SaperionNr}" x:Name="GridViewColumn_Sap" Width="100" Header="Saperion"/>
                        <!--Sup-->
                        <GridViewColumn DisplayMemberBinding="{Binding SupisNr}" x:Name="GridViewColumn_Sup" Width="100" Header="Navision"/>
                        <!--Path-->
                        <GridViewColumn DisplayMemberBinding="{Binding Path}" x:Name="GridViewColumn_Path" Width="150" Header="Pfad"/>
                        <!--Format-->
                        <GridViewColumn DisplayMemberBinding="{Binding Format}"  x:Name="GridViewColumn_Format" Width="50" Header="Format"/>
                        <!--Page-->
                        <GridViewColumn DisplayMemberBinding="{Binding Page}" x:Name="GridViewColumn_Page" Width="40" Header="Blatt"/>
                        <!--Stat-->
                        <GridViewColumn DisplayMemberBinding="{Binding Status}" x:Name="GridViewColumn_Stat" Width="175" Header="Status"/>
                    </GridView>
                </ListView.View>
            </ListView>

前もって感謝します!!!

4

1 に答える 1

1

リストビューはデフォルトで仮想化をオンにする必要があります。ただし、効果が無効になる場合があります。maxheight を設定し、ScrollViewer.VerticalScrollBarVisibility="Visible" が設定されていることを確認します。

于 2013-03-15T11:23:49.897 に答える