C# windows phone应用程序中的后退按钮控件
我正在开发一个WindowsPhone8应用程序。我想控制手机的后退按钮来完成特定的任务。我希望当用户在特定页面中按下后退按钮时,它不会导航到上一页,而是导航到我想要的页面。他们是否有办法控制手机中的硬件后退按钮 虽然可以取消导航事件,并且允许在游戏中显示暂停屏幕或类似屏幕,但通常不允许在应用程序中使用后退按钮进行后退导航以外的任何操作;根据Windows Phone的技术认证要求 为了保持一致的用户体验,后退按钮只能用于应用程序中的向后导航 如果您正在创建允许取消“返回”操作的XAML应用程序,如Windows Phone技术认证要求的5.2.4.4 : 对于游戏,当在游戏过程中按下后退按钮时,游戏可以选择显示暂停上下文菜单或对话框,也可以将用户导航到先前的菜单屏幕 然后,您可以通过覆盖页面上的C# windows phone应用程序中的后退按钮控件,c#,windows-phone-8,windows-phone,C#,Windows Phone 8,Windows Phone,我正在开发一个WindowsPhone8应用程序。我想控制手机的后退按钮来完成特定的任务。我希望当用户在特定页面中按下后退按钮时,它不会导航到上一页,而是导航到我想要的页面。他们是否有办法控制手机中的硬件后退按钮 虽然可以取消导航事件,并且允许在游戏中显示暂停屏幕或类似屏幕,但通常不允许在应用程序中使用后退按钮进行后退导航以外的任何操作;根据Windows Phone的技术认证要求 为了保持一致的用户体验,后退按钮只能用于应用程序中的向后导航 如果您正在创建允许取消“返回”操作的XAML应用程序
OnNavigatingFrom
方法来实现这一点,并设置NavigatingCancelEventArgs
的Cancel
属性,因此类似以下示例:
当然,您可以选择以不同的方式实现提示,但这应该说明如何实现提示。虽然可以取消导航事件,并且允许在游戏中显示暂停屏幕或类似屏幕,但通常不允许在应用程序中使用后退按钮进行除后退导航以外的任何操作;根据Windows Phone的技术认证要求 为了保持一致的用户体验,后退按钮只能用于应用程序中的向后导航 如果您正在创建允许取消“返回”操作的XAML应用程序,如Windows Phone技术认证要求的5.2.4.4 : 对于游戏,当在游戏过程中按下后退按钮时,游戏可以选择显示暂停上下文菜单或对话框,也可以将用户导航到先前的菜单屏幕 然后,您可以通过覆盖页面上的
OnNavigatingFrom
方法来实现这一点,并设置NavigatingCancelEventArgs
的Cancel
属性,因此类似以下示例:
当然,您可以选择以不同的方式实现提示,但这应该说明如何实现提示。虽然可以取消导航事件,并且允许在游戏中显示暂停屏幕或类似屏幕,但通常不允许在应用程序中使用后退按钮进行除后退导航以外的任何操作;根据Windows Phone的技术认证要求 为了保持一致的用户体验,后退按钮只能用于应用程序中的向后导航 如果您正在创建允许取消“返回”操作的XAML应用程序,如Windows Phone技术认证要求的5.2.4.4 : 对于游戏,当在游戏过程中按下后退按钮时,游戏可以选择显示暂停上下文菜单或对话框,也可以将用户导航到先前的菜单屏幕 然后,您可以通过覆盖页面上的
OnNavigatingFrom
方法来实现这一点,并设置NavigatingCancelEventArgs
的Cancel
属性,因此类似以下示例:
当然,您可以选择以不同的方式实现提示,但这应该说明如何实现提示。虽然可以取消导航事件,并且允许在游戏中显示暂停屏幕或类似屏幕,但通常不允许在应用程序中使用后退按钮进行除后退导航以外的任何操作;根据Windows Phone的技术认证要求 为了保持一致的用户体验,后退按钮只能用于应用程序中的向后导航 如果您正在创建允许取消“返回”操作的XAML应用程序,如Windows Phone技术认证要求的5.2.4.4 : 对于游戏,当在游戏过程中按下后退按钮时,游戏可以选择显示暂停上下文菜单或对话框,也可以将用户导航到先前的菜单屏幕 然后,您可以通过覆盖页面上的
OnNavigatingFrom
方法来实现这一点,并设置NavigatingCancelEventArgs
的Cancel
属性,因此类似以下示例:
当然,您可以选择以不同的方式实现提示,但这应该说明它是如何实现的。在Silverlight应用程序(WP7、WP8、WP8.1)中,您可以执行以下操作:
protected override void OnBackKeyPress(CancelEventArgs e)
{
// put any code you like here
MessageBox.Show("You pressed the Back button");
e.Cancel = true;
}
如果您使用的是Silverlight,这将适用于所有Windows Phone版本
如果您正在使用WinRT for Windows Phone 8.1,则有点不同: 打开NavigationHelper.cs并进行以下修改:
private void HardwareButtons_BackPressed(object sender, Windows.Phone.UI.Input.BackPressedEventArgs e)
{
if (this.GoBackCommand.CanExecute(null) && !e.Handled)
{
e.Handled = true;
this.GoBackCommand.Execute(null);
}
}
现在,在应用程序页面(按下后退按钮时将打开的页面)中,添加以下命名空间:
using Windows.Phone.UI.Input;
将此处理程序添加到页面的构造函数方法:
HardwareButtons.BackPressed += OnBackPressed;
然后添加此方法:
private async void OnBackPressed(object sender, Windows.Phone.UI.Input.BackPressedEventArgs e)
{
e.Handled = true;
// add your own code here to run when Back is pressed
}
注意:在这两种情况下,“e.Handled=true”行告诉操作系统后退按钮按下已被处理,因此操作系统不会执行默认行为。如果删除该行,您自己的代码将运行,操作系统也将执行自己的向后导航
请注意Rowland关于覆盖后退按钮的评论-如果你没有直观地导航,你将混淆用户,并冒着游戏被拒绝的风险(如果你只需要控制暂停屏幕或菜单就可以了,但如果你实施一些花招,比如将后退按钮用作游戏控件,你将遇到麻烦)
我的博客有山姆
private async void OnBackPressed(object sender, Windows.Phone.UI.Input.BackPressedEventArgs e)
{
e.Handled = true;
// add your own code here to run when Back is pressed
}