Xaml 当多个GirdView(启用一行)嵌套在ListView、ListView和#x27;他的表现很差

Xaml 当多个GirdView(启用一行)嵌套在ListView、ListView和#x27;他的表现很差,xaml,listview,uwp,winrt-xaml,uwp-xaml,Xaml,Listview,Uwp,Winrt Xaml,Uwp Xaml,我正在设计一个类似NetFlix主页的页面。它有许多(20+)GirdViews(启用一行)嵌套在外部的ListView中。所有项目都是不确定的,因此它们必须在运行时生成。 所以我设计如下: Xaml: 所以 场景1: 在启用了ListView的UI虚拟化的情况下运行应用程序,绑定过程非常快,内存约为300MB。然后使用鼠标快速向上/向下滚动ListView,ListView上下滚动非常慢,在屏幕空白后显示数据非常慢。 场景2: 在禁用ListView的UI虚拟化的情况下运行应用程序,这一次绑

我正在设计一个类似NetFlix主页的页面。它有许多(20+)
GirdView
s(启用一行)嵌套在外部的
ListView
中。所有项目都是不确定的,因此它们必须在运行时生成。 所以我设计如下:

Xaml: 所以

场景1: 在启用了
ListView
的UI虚拟化的情况下运行应用程序,绑定过程非常快,内存约为300MB。然后使用鼠标快速向上/向下滚动ListView,
ListView
上下滚动非常慢,在屏幕空白后显示数据非常慢。

场景2: 在禁用
ListView
的UI虚拟化的情况下运行应用程序,这一次绑定过程需要很长时间,内存可能会增加到1GB。但是快速地向上/向下滚动ListView就可以了

我的需要:
  • 向上/向下滚动ListView执行速度很快
  • 绑定进程快,内存低
如何修复? 如何解决这个问题,非常感谢。

我希望实时可视化树显示所有ListViewItems,因为我将使用所有ListViewItems来做一些额外的事情

为了解释这种行为,我们可以参考,UI虚拟化是您可以做出的最重要的改进

这意味着表示项目的UI元素是按需创建的。对于绑定到1000项集合的项控件,同时为所有项创建UI将是一种资源浪费,因为它们不能同时显示。ListView和GridView(以及其他标准ItemsControl派生控件)为您执行UI虚拟化。当项目接近滚动到视图中(几页之外)时,框架生成项目的UI并缓存它们。当项目不太可能再次显示时,框架会重新声明内存

您可以使用change
ItemsPanelTemplate
as
StackPanel

<ListView>
    <ListView.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel />

        </ItemsPanelTemplate>
    </ListView.ItemsPanel>
</ListView>

绑定进程快,内存低

您可以使用数据虚拟化将json数据切割成片,然后使用ListView加载更多数据

我希望实时可视化树显示所有ListViewItems,因为我将使用所有ListViewItems来做一些额外的事情

为了解释这种行为,我们可以参考,UI虚拟化是您可以做出的最重要的改进

这意味着表示项目的UI元素是按需创建的。对于绑定到1000项集合的项控件,同时为所有项创建UI将是一种资源浪费,因为它们不能同时显示。ListView和GridView(以及其他标准ItemsControl派生控件)为您执行UI虚拟化。当项目接近滚动到视图中(几页之外)时,框架生成项目的UI并缓存它们。当项目不太可能再次显示时,框架会重新声明内存

您可以使用change
ItemsPanelTemplate
as
StackPanel

<ListView>
    <ListView.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel />

        </ItemsPanelTemplate>
    </ListView.ItemsPanel>
</ListView>

绑定进程快,内存低


您可以使用数据虚拟化将json数据切割成片,然后使用ListView加载更多数据

ScrollViewer可以禁用ListView的数据可视化。ios和android上相同的设计模式表现出卓越、快速和低内存,向上/向下滚动ok。ScrollViewer可以禁用ListView的数据可视化。ios和android上相同的设计模式表现出卓越、快速和低内存,向上/向下滚动确定。也许您上面描述的是一种解决方法,但ListView中的ListView/GridView等情况仍然很常见,uwp中的性能与android/ios.emm相比并不令人满意,如果您能在用户语音中发布此内容,我们将不胜感激!您好,已经创建了一个用户语音,最后请参见,我剪切了json文件,并在滚动到页脚时加载它们。Thx.也许您上面描述的是一种解决方法,但是ListView中的ListView/GridView等情况仍然很常见,uwp中的性能与android/ios.emm相比并不令人满意,如果您能在用户语音中发布此信息,我们将不胜感激!您好,已经创建了一个用户语音,最后请参见,我剪切了json文件,并在滚动到页脚时加载它们。谢谢。
list.ItemsSource = await GetData();
<ListView>
    <ListView.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel />

        </ItemsPanelTemplate>
    </ListView.ItemsPanel>
</ListView>