【问题标题】:Data Virtualization not working数据虚拟化不工作
【发布时间】:2011-09-25 21:29:21
【问题描述】:

我一直试图通过为我的 ListView 实现虚拟化来提高性能。

我使用以下文章来实现这一点:

WPF:数据虚拟化 作者:Paul McClean http://www.codeproject.com/KB/WPF/WpfDataVirtualization.aspx

问题在于,实际上加载了所有页面,而不是仅加载几个页面,这很奇怪。加载控件时会加载所有项目。


这是我的列表视图:

    <ListView ItemsSource="{Binding}"
              VirtualizingStackPanel.IsVirtualizing="True"
              VirtualizingStackPanel.VirtualizationMode="Recycling"
              ScrollViewer.IsDeferredScrollingEnabled="True">
        <ListView.ItemsPanel>
            <ItemsPanelTemplate>
                <VirtualizingStackPanel>

                </VirtualizingStackPanel>
            </ItemsPanelTemplate>
        </ListView.ItemsPanel>
        <ListView.View>
            <GridView>
                <GridViewColumn Width="250">
                    <GridViewColumn.Header>
                        <TextBlock Text="Part Number" HorizontalAlignment="Left"></TextBlock>
                    </GridViewColumn.Header>
                    <GridViewColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding Part.PartNumber}"></TextBlock>
                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
                </GridViewColumn>

                <GridViewColumn Header="Description" Width="250">
                    <GridViewColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding Part.Description}"></TextBlock>
                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
                </GridViewColumn>

                <GridViewColumn Header="Current Price" Width="250">
                    <GridViewColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding CurrentPrice}"></TextBlock>
                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
                </GridViewColumn>

                <GridViewColumn Header="Old Price" Width="250">
                    <GridViewColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding OldPrice}"></TextBlock>
                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
                </GridViewColumn>
            </GridView>
        </ListView.View>
    </ListView>

【问题讨论】:

    标签: c# .net wpf xaml


    【解决方案1】:

    我刚刚意识到我在我的 ListView 周围使用了一个 ScrollViewer(具有属性 ScrollViewer.VerticalScrollBarVisibility="Visible"),这就是为什么要同时加载所有项目的原因。

    我删除了它,现在一切正常。

    【讨论】:

      猜你喜欢
      • 2017-12-03
      • 1970-01-01
      • 2016-05-10
      • 2013-08-06
      • 2021-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-28
      相关资源
      最近更新 更多