4

リストビュー/グリッドビューにパフォーマンスの問題があります。

仮想化されていないビューまでたどり着きました。ビジネス クリティカルなコードをすべて削除したところ、次の XAML が残りました。

<UserControl  x:Class="Weingartner.Controls.PointListEditorView"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             mc:Ignorable="d" 
             d:DesignHeight="300" d:DesignWidth="300"
              x:Name="Root">

    <Grid>
        <ListView ItemsSource="{Binding ElementName=Root, Path=Points, Mode=OneWay}">
                <ListView.View>
                    <GridView  >
                         <GridViewColumn>
                            <GridViewColumn.CellTemplate>
                                <DataTemplate>
                                    <Label>Foo</Label>
                                </DataTemplate>
                            </GridViewColumn.CellTemplate>
                        </GridViewColumn>
                     </GridView>
                </ListView.View>

            </ListView>
    </Grid>
</UserControl >

ビジュアルデバッガーを見ると、これが表示されます

デバッガーのスクリーンショット

ListViewItemインスタンスは、データの完全なリスト(約 800 ポイント) に対して継続します。

ListViewItem オブジェクトのいずれかを開くと、以下のように完全に設定されていることがわかります

ここに画像の説明を入力

私が理解している限り、ドキュメントによると、ListBox と ListView の仮想化はデフォルトでオンになっています。これは正しいです?

助言がありますか?

編集: これは完全なビジュアル ツリーのスクリーンショットです。 ここに画像の説明を入力

4

1 に答える 1

3

MahApps.Metro を使用しており、デフォルトの ListView スタイルを VirtualizedMetroListView に設定すると、仮想化が機能します。

<Style BasedOn="{StaticResource VirtualisedMetroListView}" TargetType="ListView" />

于 2016-07-21T09:58:59.163 に答える