3

预先信息: 我在应用程序中有一个页面,其设置如下:

<ScrollViewer>
    <ListView>
        //Some Grids and simple layout
    </ListView>

    <ListView>
        //Huge nested ListView containing another ListView
        <ListView>
            //Further nesting with grids and layout
        </ListView>
    </ListView>

    <ListView>
        //Some Grids
    </ListView>

</ScrollViewer>

我使用 MVVM,我用来绑定的对象是最简单的,如下所示:

public class Activity
{
    public string Description { get; set; }
    public IList<NotImportantClass> NotImportantClass{ get; set; }
    public string Comment { get; set; }
}

public class BaseClass
{
    public string Title { get; set; }
    public IList<Activity> Activities { get; set; }
}

public ObservableCollection<BaseClass> BindingSource

我正在为 UWP 开发应用程序,嵌套 ListView 的性能非常糟糕。在使用来自服务器的元素进行调试后,放置了超过 4000 个元素。我确实读过一些关于 WPF 的分组 ListView 的内容,但是我看到的大多数讲座和文章只是用一个 List 来处理它,并使用基于它的键。

Title-property 可以用作键,我只需要一些聪明的方法来使用 linq 或使用 Grouped ListView。关于如何解决这个问题的任何建议?

4

1 回答 1

0

通常,当您将任何ItemsControl类似的ListView内容放入 a ScrollViewer- 时,它会消除列表控件的虚拟化。ListViews只需将a中的三个替换为一个ScrollViewer绑定到由选择器处理的不同类型项目的单个串联列表即可恢复虚拟化并使一切顺利进行。总体而言 - 嵌套可滚动列表控件对用户不利,对性能不利。将它们嵌套在 a 中需要在允许之前设置一个标志,因为这几乎不是一个好主意。ListViewItemTemplateSelectorScrollViewerYesIKnowWhatImDoingAndIStillWantToDoIt

于 2016-06-01T03:19:37.533 回答