有没有办法如何禁用列表框记住最后一个位置?

时间:2014-01-20 16:14:14

标签: c# windows-phone-7 listbox windows-phone

我试图在ListBox中找到一些属性或方法,可以将ListBox设置为top(第一个项目将是listbox中的第一个项目)。我的意思是用户点击列表框并转到另一个页面,当他回去时,他会看到第一个项目的列表。可能吗?因为我找不到任何东西,当我尝试设置但我没有。我尝试将ItemsSource设置为null,然后再次将之前的内容ListBox放在我点击的位置。感谢

3 个答案:

答案 0 :(得分:0)

当您导航到视图时,以下代码会滚动到第一个项目:

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    var firstListBoxItem = listBox.Items.FirstOrDefault();
    if (firstListBoxItem != null) listBox.ScrollIntoView(firstListBoxItem);
}

您可以通过以下方式延长使用if(e.NavigationMode == NavigationMode.Back) { ... }

检查您是否实际向后导航

答案 1 :(得分:0)

在ScrollIntoView之前使用Updatelayout()属性:

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    var firstListBoxItem = listBox.Items.FirstOrDefault();
    if (firstListBoxItem != null)
     {
      listBox.UpdateLayout();
      listBox.ScrollIntoView(firstListBoxItem);
     }
}

答案 2 :(得分:0)

可以通过以下方式实现:

Loaded 标记中添加 ListBox 属性,

<ListBox Background="WhiteSmoke" ItemsSource="{Binding files}" Name="listBox" SelectionChanged="listBoxClicked" Loaded="list_loaded">

使用它的事件处理程序,如下代码:

private void list_loaded(object sender, RoutedEventArgs e)
{
    if (listBox != null && listBox.Items.Count > 0)
    {
        listBox.SelectedIndex = -1;    //To remove selection
        listBox.ScrollIntoView(listBox.Items[0]);    //To scroll at top (first) item position
    }
}

这应该有效。如有任何疑问,请告诉我。感谢。