C# OnBackKeyPress未按预期工作
在我的应用程序中,我有这两个功能。自从我添加了C# OnBackKeyPress未按预期工作,c#,windows-phone-8,C#,Windows Phone 8,在我的应用程序中,我有这两个功能。自从我添加了OnBackKeyPress功能后,即使我按下back按钮,OnNavigatedFrom中的if语句也是真的(可能是因为e.cancel=true;内OnBackKeyPress) 由于您正在OnBackKeyPress中设置e.cancel=true,因此导航模式将不会在OnNavigatedFrom中Back 尝试在页面中使用默认为false的全局变量,并在OnBackKeyPress中将其设置为true。然后,在OnNavigatedFrom
OnBackKeyPress
功能后,即使我按下back按钮,OnNavigatedFrom
中的if
语句也是真的(可能是因为e.cancel=true;
内OnBackKeyPress
)
由于您正在
OnBackKeyPress
中设置e.cancel=true
,因此导航模式将不会在OnNavigatedFrom
中Back
尝试在页面中使用默认为false
的全局变量,并在OnBackKeyPress
中将其设置为true
。然后,在OnNavigatedFrom
中检查此变量,而不是NavigationMode.Back
@lhan16,我尝试在if语句中设置断点,并按下了Back键。声明正在运行。我觉得取消很可能是原因。而且移除它不会导致问题。由于它将返回backstack并同时选择seler.xaml,我知道,您将希望保留e.cancel
。那么e.NavigationMode
在OnNavigatedFrom
中的值是什么呢?@lhan16和它的“新”即使在我按下windows按钮时也是如此。也许你可以创建一个名为wentBack
的全局变量,默认情况下它设置为false
,然后在OnBackKeyPress
中你可以将它设置为true
。在OnNavigatedFrom
中,您可以检查wentBack==true
,您知道用户点击了“Back”。@lhan16成功了。我在OnNavigatedTo函数中将“Back”设置为false
protected override void OnNavigatedFrom(NavigationEventArgs e)
{
// On back navigation there is no need to save state.
if (e.NavigationMode != System.Windows.Navigation.NavigationMode.Back)
{
StoreState(); //this should not run when i press back button
}
FilterPreviewPivot.SelectionChanged -= FilterPreviewPivot_SelectionChanged;
base.OnNavigatedFrom(e);
}
protected override void OnBackKeyPress(CancelEventArgs e)
{
while (NavigationService.CanGoBack) NavigationService.RemoveBackEntry();
NavigationService.Navigate(new Uri("/Chooser.xaml", UriKind.Relative));
// cancel the navigation
e.Cancel = true;
}