C# 单个ListView中的多列表

C# 单个ListView中的多列表,c#,listview,win-universal-app,uwp-xaml,C#,Listview,Win Universal App,Uwp Xaml,预信息: 我在应用程序中有一个页面,设置如下: <ScrollViewer> <ListView> //Some Grids and simple layout </ListView> <ListView> //Huge nested ListView containing another ListView <ListView> //Fur

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

<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>
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

//一些网格和简单布局
//包含另一个ListView的巨大嵌套ListView
//使用网格和布局进一步嵌套
//一些网格
我使用MVVM,我用来绑定的对象最简单的是这样的:

<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>
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
公共课堂活动
{
公共字符串说明{get;set;}
公共IList NotImportantClass{get;set;}
公共字符串注释{get;set;}
}
公共类基类
{
公共字符串标题{get;set;}
公共IList活动{get;set;}
}
公共可观测集合绑定源
我正在为UWP开发应用程序,嵌套ListView的性能非常糟糕。使用服务器中的元素进行调试后,放置的元素超过4000个。 我确实读过一些关于WPF分组列表视图的内容,但我所看到的大多数讲座和文章都只是用一个列表来处理它,并使用了一个基于该列表的键


Title属性可以用作键,我只需要一些聪明的方法来使用linq或其他东西来使用分组ListView。关于如何处理此问题的任何建议?

通常当您将任何
项控件
像您的
列表视图
放在
滚动查看器
中时-它会消除列表控件的虚拟化。只需将
ScrollViewer
中的三个
ListView
替换为单个
ListView
,并将
ItemTemplateSelector
绑定到选择器处理的不同类型项的单个串联列表,就可以恢复虚拟化并使一切顺利进行。总的来说,嵌套可滚动列表控件对用户和性能都不好。将它们嵌套在
ScrollViewer
中需要设置
YesiknowWhatimDoingand StillWantDoit
标志,然后才能允许,因为这几乎不是一个好主意