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

时间:2014-05-13 15:59:43

标签: 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;
}

所以,当我去另一个页面然后回到我的MainPage时,看起来就像我离开它一样。列表框也处于正确的位置。但每当我触摸它时,它会在滚动之前跳到顶部......

我怎样才能让它在首先回到顶部之前恢复滚动?

编辑:已解决

看起来像在WP8.1中列出了Listbox,改为使用ListView!

1 个答案:

答案 0 :(得分:5)

我遇到了同样的问题并且发现它主要是选择的ItemsPanelTemplate导致Bug。

使用ListView时,标准的ItemsPanelTemplate是ItemsStackPanel,它可以正常工作。如果将其更改为VirtualizingStackPanel(ListBox的标准),则会显示错误。但只有在Windows Phone上,对于Windows,它才能像预期的那样工作。

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