【转】【译】【Win10】在你的程序标题栏中显示后退按钮

原文地址:http://www.sharpgis.net/post/2015/05/21/Displaying-a-backbutton-in-your-app-window

免责声明:这篇文章基于 Windows 10 技术预览版 10122。这可能会在未来发生改变。

在 Windows 10 中,有一些应用,在它们顶部的标题栏里,有一个后退按钮。例如设置中:

image

我们可以使用 SystemNavigationManager 的 AppViewBackButtonVisibility 属性来控制是否显示这么一个按钮。

使用的方法是这样的:

SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = AppViewBackButtonVisibility.Visible;

当你让你的 Windows 通用程序在桌面系统运行时,运行上面这段代码后,你可以看见一个一样的按钮出现了。当标题栏有足够空间的时候,我们没必要将它放到其它地方,浪费空间。

当然,在手机设备上,这行代码不是必须的(尽管你调用了看起来也没发生任何变化)。以防万一,最好还是调用一下吧,说不定你的设备支持呢。

// 在导航到每一页的时候,显示或隐藏后退按钮
if (Frame.CanGoBack)
    SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = AppViewBackButtonVisibility.Visible;
else
    SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = AppViewBackButtonVisibility.Collapsed;


// 注册后退按钮事件。调用一次就好了,别手贱。例如可以在程序启动时调用
SystemNavigationManager.GetForCurrentView().BackRequested += (s, e) =>
{
    if (Frame.CanGoBack)
        Frame.GoBack();
};
if (Windows.Foundation.Metadata.ApiInformation.IsTypePresent("Windows.Phone.UI.Input.HardwareButtons"))
{
    // 如果设备有后退按钮,那么同样处理下。
    Windows.Phone.UI.Input.HardwareButtons.BackPressed += (s, e) =>
    {
        if (Frame.CanGoBack)
        {
            e.Handled = true;
            Frame.GoBack();
        }
    };
}

现在你可以在桌面和手机平台都获得一个后退按钮了!

不幸的是,BackRequested 事件和 BackPressed 事件的参数是不相同的,所以你不能为两者使用同一个事件处理程序。这点是相当遗憾的,我(原作者)希望微软能够尽快解决一下。

 

译者(h82258652)注:由于原文直译过来的话,感觉过于生硬,因此有部分采取意译,尽可能跟原文作者的想法保持一致。如果有任何疑难,请查阅原文。谢谢!

posted @ 2015-05-22 20:24  h82258652  阅读(1447)  评论(0编辑  收藏  举报