这与如何在 MVVM WPF 应用程序中控制 ListBox 的滚动位置中提出的问题类似,但相反,我试图从 Windows 应用商店应用程序中实现类似的效果:我想知道如何从 MVVM 风格的应用程序的视图模型中滚动 aListView
到当前(或任意)项目。
与 WPF 相比,WinRT 存在一些限制:
- 该
IsSynchronizedWithCurrentItem
属性在或相关类上不受支持ListView
(该属性存在但使用它会引发运行时异常,表明当前不支持该属性); - 仅部分支持
ICollectionView
,CollectionViewSource
和其他相关类型。
幸运的是,Bernardo Castilho 在 CodeProject ( http://www.codeproject.com/Articles/527686/A-WinRT-CollectionView-class-with-Filtering-and-So )CollectionViewSource
的解决方案优雅地解决了这个问题。不幸的是,缺乏对 的支持使得解决问题的其余部分变得棘手。IsSynchronizedWithCurrentItem
已经有几个类似的问题(例如Windows 8 Metro 风格 ListView auto scroll),但它们没有从 MVVM 的角度解决问题,也不允许我在项目中使用最少的代码隐藏来维护干净的 MVVM 架构.