0

我的问题是我有一个清单。当我长按列表中的特定项目时,它会打开一个上下文菜单,当我单击上下文菜单中的一个菜单项时,它会打开一个弹出窗口,所以在按下硬件后退按钮时,我希望我再次返回列表. 所以为此我的代码是:

protected override void OnBackKeyPress(object sender,System.ComponentModel.CancelEventArgs e)
    {
        if (calendarDescripton.Visibility == Visibility.Visible)
        {
            calendarDescripton.Visibility = Visibility.Collapsed;
            e.Cancel = true;
        }

    }

使用此代码后,当我单击打开列表的按钮时,应用程序退出,它也没有打开列表。

4

1 回答 1

0

我认为首先应该取消导航,然后再进行任何其他更改。尝试这个

protected override void OnBackKeyPress(object sender,System.ComponentModel.CancelEventArgs e)
{
    if (calendarDescripton.Visibility == Visibility.Visible)
    {
        e.Cancel = true;
        calendarDescripton.Visibility = Visibility.Collapsed;
    }
}

如果这没有帮助,请在 if 条件处放置一个中断点并检查它是否进入 if 内部

如果断点没有命中,则意味着您的导航方法有问题。

如果您使用 NavigationService.Navigate() 方法进行页面导航,它应该可以工作。否则,如果您使用, App.Current.RootVisual = new MyPage();,则无法覆盖 BackKey。

于 2013-03-07T08:10:31.980 回答