• 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

    每天编程两小时,不想变大牛都难!
  • 相关阅读:
    [转]2013豆瓣校园招聘研发类笔试题
    【强烈推荐】《剑指Offer:名企面试官精讲典型编程题》一书中IT名企经典面试题
    [转]2013百度校园招聘-机器学习和数据挖掘工程师-笔试题
    [转]一个应届计算机毕业生的2012求职之路
    图片镜像
    家有学霸的CEO
    盯盯拍Android App 3.0指导
    淘宝领取金币
    儿童散光眼的分类
    女孩被宠坏叫爷爷滚开
  • 原文地址:https://www.cnblogs.com/frendguo/p/5879554.html
Copyright © 2020-2023  润新知