Muliple在单个ListView中列出

时间:2016-04-18 13:02:11

标签: c# listview win-universal-app uwp-xaml

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

<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。关于我如何处理这个问题的任何建议?

1 个答案:

答案 0 :(得分:0)

通常当您将ItemsControl置于ListView之内时,它会消除列表控件的虚拟化。只需将ScrollViewer中的三个ListViews替换为一个ScrollViewer并将ListView绑定到不同类型的单个连续项列表,就可以了由选择器处理将恢复虚拟化并使一切顺利进行。总体而言 - 嵌套可滚动列表控件对用户不利,对性能不利。将它们嵌套在ItemTemplateSelector中应该在允许之前设置ScrollViewer标志,因为它几乎不是一个好主意。