从上一个位置恢复滚动时,列表框跳到顶部

Phi*_*aes 5 c# listbox windows-phone-8.1

(Windows Phone 8.1)在我的应用程序中,我有一个带有列表框的MainPage.NavigationCacheMode设置为在导航回同一页面时保留状态所必需的.

public MainPage()
{
    this.InitializeComponent();
    this.DataContext = this;

    // cache page
    this.NavigationCacheMode = NavigationCacheMode.Required;
}
Run Code Online (Sandbox Code Playgroud)

因此,当我转到另一页并回到我的MainPage时,看起来就像我离开它一样.列表框也处于正确的位置.但每当我触摸它时,它会在滚动之前跳到顶部......

如何才能让它在首先进入顶部之前恢复滚动?

编辑:解决了

好像Listbox在WP8.1中被窃听,而是使用ListView!

小智 5

我有同样的问题,并发现它主要是选择的ItemsPanelTemplate导致Bug.

使用ListView时,标准的ItemsPanelTemplate是ItemsStackPanel,它可以正常工作.如果将其更改为VirtualizingStackPanel(ListBox的标准),则会显示错误.但仅在Windows Phone上,对于Windows,它的工作方式与预期的一样.

所以我假设,当你想使用ListBox而不是ListView时,你必须使用ItemStackPanel作为ItemsPanelTemplate来保存通过NavigationCacheMode的滚动位置.