如何滚动到新添加的HubSection?

时间:2016-07-19 10:31:58

标签: c# xaml uwp

我正在使用Hub来允许用户深入查看分层数据。集线器水平滚动,每个HubSection包含各种项目的ListView。

当用户点击某个项目时,我会在右侧添加一个新的HubSection。我希望Hub能够滚动显示新的HubSection。

这样做不起作用:

myHub.Sections.Add(myNewHubSection);
myHub.ScrollToSection(myNewHubSection);

添加延迟意味着它最终会滚动到正确的位置,所以我认为问题是新的HubSection尚未渲染:

myHub.Sections.Add(myNewHubSection);
await Task.Delay(1000);
myHub.ScrollToSection(myNewHubSection);

我也尝试过测量HubSections并手动设置动画as detailed here,但由于同样的原因也失败了 - 新的HubSection在添加时仍然没有大小。

有更好的方法吗?动画会更好。

2 个答案:

答案 0 :(得分:0)

您可以订阅myNewHubSection.Loaded并在那里触发myHub.ScrollToSection()吗?

答案 1 :(得分:0)

您可以尝试在调用“滚动到”部分之前手动调用“UpdateLayout()”。这可能会强制它渲染并能够滚动。

对于动画片,这篇博客文章有一个很好的演练:

http://blogs.u2u.be/diederik/post/2015/02/23/An-animated-ScrollToSection-for-the-Universal-Hub-Control.aspx

或者,如果您能以某种方式知道偏移量,则可以使用WinRTXamlToolkit中的ScrollViewerExtensions。它还为AwaitableUI库提供了可用于等待新Hub部分加载的扩展。