我正在使用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在添加时仍然没有大小。
有更好的方法吗?动画会更好。
答案 0 :(得分:0)
您可以订阅myNewHubSection.Loaded
并在那里触发myHub.ScrollToSection()
吗?
答案 1 :(得分:0)
您可以尝试在调用“滚动到”部分之前手动调用“UpdateLayout()”。这可能会强制它渲染并能够滚动。
对于动画片,这篇博客文章有一个很好的演练:
或者,如果您能以某种方式知道偏移量,则可以使用WinRTXamlToolkit中的ScrollViewerExtensions。它还为AwaitableUI库提供了可用于等待新Hub部分加载的扩展。