1

这与如何在 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 架构.

4

1 回答 1

1

您可以从 WinRT XAML 工具包中检查ListViewExtensions.ItemToBringIntoView附加属性,它的工作方式应该与您绑定SelectedItem属性的方式类似,但它会将项目显示在视图中。

于 2013-02-27T17:33:05.310 回答