【问题标题】:ISupportIncrementalLoading inside ScrollViewer not supported?不支持 ScrollViewer 中的 ISupportIncrementalLoading?
【发布时间】:2014-04-08 19:03:33
【问题描述】:

我有一个GridViewGridView.ItemsSource 设置为实现ISupportIncrementalLoading 的集合。通过实现这一点,我的目标是通过仅加载显示所需的项目来改善加载时间和 UI 响应能力。该框架为我处理了这个问题,并且效果很好。

    <GridView ItemsSource="{Binding Items}">
        <GridView.ItemTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding Text}"/>
            </DataTemplate>
        </GridView.ItemTemplate>
    </GridView>

但是,如果我将上述 XAML 包装在 ScrollViewer 中,如下所示,整个项目集合会加载,就好像 GridView 无法分辨它的边界在哪里.

<ScrollViewer>
    <GridView ItemsSource="{Binding Items}">
        <GridView.ItemTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding Text}"/>
            </DataTemplate>
        </GridView.ItemTemplate>
    </GridView>
</ScrollViewer>

我知道 ScollViewer 将允许它的内容填充尽可能多的空间,所以这里的效果确实有意义;这只是一个无法预料的烦恼。有没有人可以解决这个问题?

注意:为了举例,我在这里简化了代码。如果它有助于了解我要完成的工作:我的目标是在我的 Hub 页面上的 HubSection 内有一个增量加载的 GridView。我的中心页面有 2 个 HubSection,一个宽度为 600 像素,另一个包含 GridView,但未定义宽度。

【问题讨论】:

  • 问题是,如果GridView 中已经有ScrollViewer,为什么还要在ScrollViewer 中添加GridView
  • @FilipSkakun 我实际上是在尝试将 GridView 放在 HubSection 中。问题在这两种情况下都会出现。我认为人们可能更熟悉 ScrollViewer 控件。
  • 对,Hub 控件也有一个 ScrollViewer,所以同样的问题也适用。我的回答也是。

标签: .net xaml windows-runtime winrt-xaml scrollviewer


【解决方案1】:

您可以通过手动设置GridView 的大小来轻松解决此问题。根据您的情况,您可以执行一次,也可以处理ScrollViewer 上的SizeChanged 事件,并根据ScrollViewer 的视口大小属性设置GridView 的大小。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-20
    • 1970-01-01
    • 2012-10-05
    • 2012-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-17
    相关资源
    最近更新 更多