Win10的UWP之标题栏的返回键(二)

原创 2016年07月12日 19:45:35

关于Win10的UWP的返回键的第二种处理的方法,是介于标题栏的强行修改,不是像上期的那样直接调用系统内置的API。
- - - - - - - - - - - - - - - - - - - - - - - -我是万恶的分割线- - - - - - - - - - - - - - - - - -
首先我们先设置以下界面的布局,界面的代码如下

        <StackPanel>
            <Grid x:Name="GridTitleBar" Background="SteelBlue" Height="36">
                <Grid  Background="Transparent">
                    <TextBlock Text="标题栏测试" 
                               HorizontalAlignment="Center" 
                               VerticalAlignment="Center"
                               FontSize="24"/>
                </Grid>
            </Grid>
            <Button x:Name="NexButton" 
                    Grid.Column="5" Grid.Row="5" 
                    Content="下一页" Click="NexButton_Click" />
        </StackPanel>

这里写图片描述

紧接着我们来处理以下界面的后台的代码,现在系统内原有的主方法写以下代码

        public MainPage()
        {
            this.InitializeComponent();
            if (App.IsHardwareButtonAPIPresent)
            {
                GridTitleBar.Visibility = Visibility.Collapsed;
                //MGridTitlr.Visibility = Visibility.Visible;
            }
            else
            {
                GridTitleBar.Visibility = Visibility.Visible;
                //MGridTitlr.Visibility = Visibility.Collapsed;
            }

这里写图片描述

这里我们来设置一下强行修改的标题栏的颜色,以及相关的属性设置

void TitleBar()
        {
            var coreTitleBar = CoreApplication.GetCurrentView().TitleBar;
                coreTitleBar.ExtendViewIntoTitleBar = true;
            Window.Current.SetTitleBar(GridTitleBar);

            var view = ApplicationView.GetForCurrentView();
            view.TitleBar.ButtonBackgroundColor = Colors.SteelBlue;
            view.TitleBar.ButtonForegroundColor = Colors.White;

            view.TitleBar.ButtonHoverBackgroundColor = Color.FromArgb(255, 92, 157, 211);
            view.TitleBar.ButtonHoverBackgroundColor = Colors.White;

            view.TitleBar.ButtonPressedBackgroundColor = Color.FromArgb(255, 92, 157, 211);
            view.TitleBar.ButtonPressedForegroundColor = Colors.White;

            view.TitleBar.ButtonInactiveBackgroundColor = Color.FromArgb(129, 70, 130, 180);
            view.TitleBar.ButtonInactiveForegroundColor = Colors.WhiteSmoke;

            Window.Current.Activated += (sender, args) =>
            {
                if (args.WindowActivationState != CoreWindowActivationState.CodeActivated)
                {
                    GridTitleBar.Opacity = 1;
                }
                else
                {
                    GridTitleBar.Opacity = 0.5;
                }
            };
        }

这里写图片描述

在来我们来处理一下界面中的跳转事件

        private void NexButton_Click(object sender, RoutedEventArgs e)
        {
            Frame.Navigate(typeof(BlankPage1));
        }

这里写图片描述

然后我们再来这里新建一个页面,来把响应的返回键放在修改过的标题栏上,由于是放回的主界面,除了主界面以外我们都不需要标题栏的返回键,这也是较为完美的一种处理方案。
这里写图片描述
我们再来处理以下新建页面的界面代码

<Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>

        <Grid Background="SteelBlue" Grid.Row="0" Height="36">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="Auto" />
                <ColumnDefinition Width="*" />
            </Grid.ColumnDefinitions>
            <Grid x:Name="GridBackBtnBar" Grid.Column="0" Background="Transparent">
                <Button x:Name="BackButton" Click="BackButton_Click" 
                        Style="{StaticResource NavigationBackButtonSmallStyle}" />
            </Grid>
            <Grid x:Name="GridTitleBar" Grid.Column="1" Background="Transparent">
                <TextBlock Text="新的标题测试" 
                           HorizontalAlignment="Center"
                           VerticalAlignment="Center"
                            FontSize="24"/>
            </Grid>
        </Grid>

这里写图片描述

后面的我们再来相应的处理以下新建页面的后台代码

        void EnableBackButtonOnTitleBar(EventHandler<BackRequestedEventArgs> onBackRequested)
        {
            var currentView = SystemNavigationManager.GetForCurrentView();
            currentView.AppViewBackButtonVisibility = AppViewBackButtonVisibility.Visible;
            currentView.BackRequested += onBackRequested;
        }

        void TitleBar()
        {
            var coreTitleBar = CoreApplication.GetCurrentView().TitleBar;
            coreTitleBar.ExtendViewIntoTitleBar = true;
            Window.Current.SetTitleBar(GridTitleBar);

            var view = ApplicationView.GetForCurrentView();
            view.TitleBar.ButtonBackgroundColor = Colors.SteelBlue;
            view.TitleBar.ButtonForegroundColor = Colors.White;

            view.TitleBar.ButtonHoverBackgroundColor = Color.FromArgb(255, 92, 157, 211);
            view.TitleBar.ButtonHoverBackgroundColor = Colors.White;

            view.TitleBar.ButtonPressedBackgroundColor = Color.FromArgb(255, 92, 157, 211);
            view.TitleBar.ButtonPressedForegroundColor = Colors.White;

            view.TitleBar.ButtonInactiveBackgroundColor = Color.FromArgb(129, 70, 130, 180);
            view.TitleBar.ButtonInactiveForegroundColor = Colors.WhiteSmoke;

            Window.Current.Activated += (sender, args) =>
            {
                if (args.WindowActivationState != CoreWindowActivationState.CodeActivated)
                {
                    GridTitleBar.Opacity = 1;
                }
                else
                {
                    GridTitleBar.Opacity = 0.5;
                }
            };
        }

这里写图片描述

由于我们在前面做了Click事件,现在我们把Click事件处理了

        private void BackButton_Click(object sender, RoutedEventArgs e)
        {
            if (this.Frame.CanGoBack)
            {
                this.Frame.GoBack();
            }
        }

这里写图片描述

写到这里也就差不多了,回头看看,我们还少写了一句代码,这是调用写好的方法在主方法中使用

  TitleBar();

这里写图片描述

好了,写了这么久,终于写完了,看看我们的目的达到了没有
这里写图片描述

想看的结果的页面是最后一张图,嘻嘻!!!
这里写图片描述

版权声明:本文为博主原创文章,未经博主允许不得转载。

Win10开发之UWP控件的隐藏空间

在UWP的开发中,我们想要充分的利用整个屏幕的空间,我们可以用隐藏的方式进行。话不多说,我先来上图看看效果! -这就是我这篇博客所要说的UWP的控件隐藏!接下来我们来上教程,一步步教你,简单易懂,哈...
  • zhongyanfu0
  • zhongyanfu0
  • 2016年12月14日 22:20
  • 579

Win10的UWP之标题栏的返回键(一)

关于返回键,放在标题栏是目前较为完美的一种方案。继前一篇的Hello World,博主进行一些修改实现该方法。 - - - - - - - - - - - - - - - - - - - - - -...
  • zhongyanfu0
  • zhongyanfu0
  • 2016年07月11日 19:27
  • 1269

win10 UWP 标题栏后退

设置里,标题栏有后退按钮 在win平板,可以有后退键,手机也有 pc可以在标题栏 在OnLaunched //最后 Windows.UI.Core.SystemNavigat...
  • lindexi_gd
  • lindexi_gd
  • 2016年02月09日 18:31
  • 3201

UWP怎么双击后退按钮完全退出应用

public MainPage() { this.InitializeComponent(); var m = SystemNavigationMa...
  • xuzhongxuan
  • xuzhongxuan
  • 2015年11月21日 10:57
  • 1954

UWP 程序标题栏设置

我们可以通过两种方式获取不同的标题栏对象,不同对象操作侧重点不同。 var coreTitleBar = Windows.ApplicationModel.Core.CoreApplication....
  • xuzhongxuan
  • xuzhongxuan
  • 2016年03月06日 19:37
  • 1476

Win10开发:玩转应用窗体和应用标题栏TitleBar

Windows10 API允许开发者自定义应用标题栏。但是什么是应用标题栏?比如Groove音乐的应用标题栏就是下面这样:     什么,你说看不清楚。因为它是白色的,是微软设计的,这锅我不背。 你...
  • zmq570235977
  • zmq570235977
  • 2015年09月05日 17:05
  • 1377

Win10的UWP之标题栏的返回键(一)

关于返回键,放在标题栏是目前较为完美的一种方案。继前一篇的Hello World,博主进行一些修改实现该方法。 - - - - - - - - - - - - - - - - - - - - - -...
  • zhongyanfu0
  • zhongyanfu0
  • 2016年07月11日 19:27
  • 1269

Win10开发:玩转应用窗体和应用标题栏TitleBar

Windows10 API允许开发者自定义应用标题栏。但是什么是应用标题栏?比如Groove音乐的应用标题栏就是下面这样:     什么,你说看不清楚。因为它是白色的,是微软设计的,这锅我不背。 你...
  • zmq570235977
  • zmq570235977
  • 2015年09月05日 17:05
  • 1377

win10 uwp 圆角按钮

本文讲的是如何做圆角按钮,我们在UWP本来的按钮都是矩形,圆角Radius没有,所以本文就用简单方法去做圆角按钮。...
  • lindexi_gd
  • lindexi_gd
  • 2016年07月29日 17:33
  • 2970

Win10开发:应用标题栏中添加返回操作

这篇文章的标题真不知道怎么起合适,反正要实现的效果就是下面这样: 在接着看下面之前,首先要明确,应用标题栏是Desktop才有的,Mobile上不存在这东西 先来看最终效果图: Page1(MainP...
  • zmq570235977
  • zmq570235977
  • 2016年01月11日 19:34
  • 579
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Win10的UWP之标题栏的返回键(二)
举报原因:
原因补充:

(最多只允许输入30个字)