(Windows Phone 8.1)在我的应用程序中,我有一个带有列表框的MainPage。 NavigationCacheMode设置为在导航回同一页面时保留状态所必需的。
public MainPage()
{
this.InitializeComponent();
this.DataContext = this;
// cache page
this.NavigationCacheMode = NavigationCacheMode.Required;
}
所以,当我去另一个页面然后回到我的MainPage时,看起来就像我离开它一样。列表框也处于正确的位置。但每当我触摸它时,它会在滚动之前跳到顶部......
我怎样才能让它在首先回到顶部之前恢复滚动?
编辑:已解决
看起来像在WP8.1中列出了Listbox,改为使用ListView!
答案 0 :(得分:5)
我遇到了同样的问题并且发现它主要是选择的ItemsPanelTemplate导致Bug。
使用ListView时,标准的ItemsPanelTemplate是ItemsStackPanel,它可以正常工作。如果将其更改为VirtualizingStackPanel(ListBox的标准),则会显示错误。但只有在Windows Phone上,对于Windows,它才能像预期的那样工作。
所以我假设,当你想使用ListBox而不是ListView时,你必须使用ItemStackPanel作为ItemsPanelTemplate来保存通过NavigationCacheMode的滚动位置。