使用返回键导航时列表框项目问题

时间:2011-08-31 06:40:08

标签: c# windows-phone-7

我有一个列表框,当点击列表项时,它会转到其详细页面。当我从详细信息页面按下后退键时,如果我再次单击该销售列表项目,则不会导航到详细信息页面但如果我点击列表中的其他项目,它会导航到相应的详细信息页面。 实际上我没有重新加载按下后退键的列表框。我只是从后面的堆栈弹出它。如果我重新加载列表框问题就不存在了。这个问题是否有任何解决方案。下面是我的代码。

ListViewPage

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
    if (DetailPage.isBackkeyPressed && list != null)
    {
        DetailPage.isBackkeyPressed = false;
    }
    else
    {
        ListDetails(); //Reloading the page if list is empty
    }

    base.OnNavigatedTo(e);
}

private void listBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    if (listBox.SelectedIndex >= 0)
    {
        (Application.Current as App).obj_list = list[listBox.SelectedIndex];
        NavigationService.Navigate(new Uri("/DetailPage.xaml", UriKind.Relative)); //Navigate to detail page
    }
}

DetailPage

protected override void OnBackKeyPress(System.ComponentModel.CancelEventArgs e)
{
    isBackkeyPressed = true;//flag  for check if back key is pressed
    base.OnBackKeyPress(e);
}

1 个答案:

答案 0 :(得分:2)

您需要取消设置SelectedIndex,将其设置为-1,如下所示:

private void listBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    if (listBox.SelectedIndex >= 0)
    {
        (Application.Current as App).obj_list = list[listBox.SelectedIndex];
        NavigationService.Navigate(new Uri("/DetailPage.xaml", UriKind.Relative)); //Navigate to detail page

        listBox.SelectedIndex = -1;
    }
}