UWP 应用中的Back button(TitleBar) 的处理

后退按钮是一项系统提供的 UI 提示,可以在后退堆栈或用户导航历史记录中支持向后导航。

用起来其实也是很简单的,只需要在App.xaml.cs 中修改(添加)如下红色代码,便可实现。。

    sealed partial class App : Application
    {
        /// <summary>
        /// 初始化单一实例应用程序对象。这是执行的创作代码的第一行,
        /// 已执行,逻辑上等同于 main() 或 WinMain()。
        /// </summary>
        public App()
        {
            this.InitializeComponent();
            this.Suspending += OnSuspending;
        }

        /// <summary>
        /// 在应用程序由最终用户正常启动时进行调用。
        /// 将在启动应用程序以打开特定文件等情况下使用。
        /// </summary>
        /// <param name="e">有关启动请求和过程的详细信息。</param>
        protected override void OnLaunched(LaunchActivatedEventArgs e)
        {

            Frame rootFrame = Window.Current.Content as Frame;

            // 不要在窗口已包含内容时重复应用程序初始化,
            // 只需确保窗口处于活动状态
            if (rootFrame == null)
            {
                // 创建要充当导航上下文的框架,并导航到第一页
                rootFrame = new Frame();

                rootFrame.NavigationFailed += OnNavigationFailed;

                rootFrame.Navigated += RootFrame_Navigated;

                if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)
                {
                    //TODO: 从之前挂起的应用程序加载状态
                }

                // 将框架放在当前窗口中
                Window.Current.Content = rootFrame;
            }

            if (e.PrelaunchActivated == false)
            {
                if (rootFrame.Content == null)
                {
                    // 当导航堆栈尚未还原时,导航到第一页,
                    // 并通过将所需信息作为导航参数传入来配置
                    // 参数
                    rootFrame.Navigate(typeof(MainPage), e.Arguments);
                }

                //注册 backbutton 事件
                SystemNavigationManager.GetForCurrentView().BackRequested += App_BackRequested;

                // 确保当前窗口处于活动状态
                Window.Current.Activate();
            }
        }

        // 每次导航事件发生时,更新返回键的可见信息
        private void RootFrame_Navigated(object sender, NavigationEventArgs e)
        {
            SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility =
                ((Frame)sender).CanGoBack ?
                AppViewBackButtonVisibility.Visible :
                AppViewBackButtonVisibility.Collapsed;
        }

        //titleBar 返回事件
        private void App_BackRequested(object sender, BackRequestedEventArgs e)
        {
            Frame rootFrame = Window.Current.Content as Frame;

            if (rootFrame == null)
            {
                return;
            }

            //e.Handled 该值指示应用程序是否执行了请求的返回导航功能
            if (rootFrame.CanGoBack && e.Handled == false)
            {
                e.Handled = true;
                rootFrame.GoBack();
            }
        }

        /// <summary>
        /// 导航到特定页失败时调用
        /// </summary>
        ///<param name="sender">导航失败的框架</param>
        ///<param name="e">有关导航失败的详细信息</param>
        void OnNavigationFailed(object sender, NavigationFailedEventArgs e)
        {
            throw new Exception("Failed to load Page " + e.SourcePageType.FullName);
        }

        /// <summary>
        /// 在将要挂起应用程序执行时调用。  在不知道应用程序
        /// 无需知道应用程序会被终止还是会恢复,
        /// 并让内存内容保持不变。
        /// </summary>
        /// <param name="sender">挂起的请求的源。</param>
        /// <param name="e">有关挂起请求的详细信息。</param>
        private void OnSuspending(object sender, SuspendingEventArgs e)
        {
            var deferral = e.SuspendingOperation.GetDeferral();
            //TODO: 保存应用程序状态并停止任何后台活动
            deferral.Complete();
        }
    }
}

Link:

MSDN:https://msdn.microsoft.com/en-us/library/windows/apps/dn439322.aspx

参考博客:http://devcenter.wintellect.com/jprosise/handling-the-back-button-in-windows-10-uwp-apps

时间: 2024-10-16 04:09:19

UWP 应用中的Back button(TitleBar) 的处理的相关文章

在 UWP 应用中创建、使用、调试 App Service (应用服务)

在 Windows 10 中微软为 UWP 引入了 App Service (即应用服务)这一新特性用以提供应用间交互功能.提供 App Service 的应用能够接收来自其它应用传入的参数进行处理后返回数据. 创建应用服务 要使应用支持提供 App Service 非常简单.只需正确配置应用的清单文件后添加服务相关的代码即可. 配置应用清单文件 打开项目中的 Package.appxmanifest 文件. 切换到 Declarations 选项卡. 在左侧 Available Declara

Windows10(uwp)开发中的侧滑

还是在持续的开发一款Windows10的应用中,除了上篇博客讲讲我在Windows10(uwp)开发中遇到的一些坑,其实还有很多不完善的地方,比如(UIElement.Foreground).(GradientBrush.GradientStops)[1].(GradientStop.Offset)这种设置无法生效,还有RelativePanel内的元素不能自动的适应大小,要去手动控制宽高度,以及窗口在靠边的时候一些尺寸上的错误等等.虽然是WPF技术之后的延续,但是很多地方还是要小心仔细的处理,

CheckBox控件中background和button的区别

控件:CheckBox android:background="@drawable/me_setting_switch_selector" 这个表示替换默认控件的背景 android:button="@drawable/me_setting_switch_selector" 这个表示替换默认控件的图片 区别在于:background的替换会让控件大小根据图片大小的变动 button则只是改变图片,不会让图片大小超出控件默认的大小 CheckBox控件中backgro

Gridview中几个Button的应用

gridview中有三种方式添加button的应用,CommandField.ButtonField.TemplateField中加Button这三种方式.三种方式都可以实现同样的功能,但在实现某些功能时,实现方法是不一样的,下面我们来介绍一下: 一.获取选中行的某个字段值 1.模板中加Button,利用CommandArgument绑定数据库中某个字段. A.首先,模板Button设置commandname为一个值例如“selectid”,绑定CommandArgument到数据库一个字段,C

jquery选择器中(:button)的含义

在有了javascript基础后开始学习的jquery,水平很菜,但还是想把我日常学习中发现的一些之前不太理解的东西后来有了一些了解的东西写出来与大家分享,如果有不对的地方也欢迎各位大神指正. jquery中选择器中(:button)在W3Cshcool中的解释是[选取所有 type="button" 的 <input> 元素 和 <button> 元素] 但在我的测试中,当button的type=submit的时候也一样可以选择出来. <!DOCTYPE

使用Win2D在UWP程序中2D绘图(一)

在新的Windows UWP程序中,引入了一个新的API库: Win2D.它是一个d2d的封装,可以直接使用C#来快速实现高效2D绘图了.这个API虽然在Win8.1时代就开始着手开发了,但最近才完善了下来.本文这里就简单的介绍一下它的基本用法: 安装 Win2D并不是Win10 SDK里面的一部分,需要从Nuget上安装,在程序包管理器里直接安装Win2D.uwp即可. PM> Install-Package Win2D.uwp 这个是Win10下的库,Win8下需要使用Win2D.win81

IE8下div中2个button仅仅显示一个

IE8下div中2个button仅仅显示一个,代码例如以下: <div id="adviceType" style="display: none;" > <select name="adviceTypeOne" id="adviceTypeOne" class="shortselect" > <option value="-1">--请选择--<

[UWP]在UWP平台中使用Lottie动画

原文:[UWP]在UWP平台中使用Lottie动画 最近QQ影音久违的更新了,因为记得QQ影音之前体验还算不错(FFmepg的事另说),我也第一时间去官网下载体验了一下,结果发现一些有趣的事情. 是的,你没看错,QQ影音主界面上这个动画效果是使用Lottie动画实现的! 这让我大为惊奇,我对Lottie了解还算是比较多的,但是Lottie常见应用于移动端APP和网页,在传统桌面端见到还是第一次. 那就趁这个机会,来分享点关于Lottie动画的东西吧! Lottie动画的UWP实现 Lottie是

UWP:使用Behavior实现Button点击动态效果

废话不多说,先上效果 没有做成安卓那种圆形的原因是...人家真的不会嘛... 好了下面是正文: 首先在工程中引入Behavior的库,我们使用Nuget. 在项目->引用上点击右键,点击管理Nuget程序包,然后浏览里搜索Microsoft.Xaml.Behaviors.Uwp.Managed 或者在程序包管理控制台里(如果输出右边没有这个标签,使用工具->Nuget包管理器->程序包管理控制台打开),输入命令 Install-Package Microsoft.Xaml.Behavio