在 Windows 8 Metro 中使用 VirtualizingStackPanel 将项目滚动到居中

本文关键字:项目 滚动 VirtualizingStackPanel Windows Metro | 更新日期: 2023-09-27 18:36:22

我正在开发一个Windows 8 Metro应用程序,并且有一个GridView,其中显示了几百个不同宽度的项目。我正在使用VirtualizingStackPanel来帮助改善内存消耗。我需要将项目滚动到 GridView 的中心。使用 GridView.ScrollIntoView 或 VirtualizingStackPanel.SetHorizontalOffset 会将项目滚动到屏幕边缘,而不是中心。

这篇文章讨论了一个类似的问题,但在WPF方面。问题是 a) 不会针对 Metro 应用程序进行编译,因为一些对象不存在,并且 b) 逻辑滚动的实现似乎取决于项目宽度相等。

这个问题的最佳解决方案是什么?框架中是否有一些可用的东西可以使这变得简单?

在 Windows 8 Metro 中使用 VirtualizingStackPanel 将项目滚动到居中

ScrollIntoView 可以工作,但你需要这样称呼它:

await Dispatcher.RunAsync(CoreDispatcherPriority.Low,
                        () => { this.gridView.ScrollIntoView(yourItem); });