• 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

    每天编程两小时,不想变大牛都难!
  • 相关阅读:
    查找->静态查找表->次优查找(静态树表)
    P1993-小K的农场
    P1983-车站分级
    P1268-树的重量
    P1113-杂务
    P1265-公路修建
    P2330-[SCOI2005]繁忙的都市
    P1546-最短网络
    P1144-最短路计数
    P1462-通往奥格瑞玛的道路
  • 原文地址:https://www.cnblogs.com/frendguo/p/5879554.html
Copyright © 2020-2023  润新知