预信息: 我在应用中有一个页面,其设置如下:
<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。关于我如何处理这个问题的任何建议?
答案 0 :(得分:0)
通常当您将ItemsControl
置于ListView
之内时,它会消除列表控件的虚拟化。只需将ScrollViewer
中的三个ListViews
替换为一个ScrollViewer
并将ListView
绑定到不同类型的单个连续项列表,就可以了由选择器处理将恢复虚拟化并使一切顺利进行。总体而言 - 嵌套可滚动列表控件对用户不利,对性能不利。将它们嵌套在ItemTemplateSelector
中应该在允许之前设置ScrollViewer
标志,因为它几乎不是一个好主意。