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

关于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之标题栏的返回键(二)的更多相关文章

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

    原文:Win10的UWP之标题栏的返回键(一) 关于返回键,放在标题栏是目前较为完美的一种方案.继前一篇的Hello World,博主进行一些修改实现该方法. - - - - - - - - - - ...

  2. android 实现返回键执行home键方法

    在公司的产品开发,中老板很是执着于,不要看到启动界面,但是又不想去掉启动界面. so 实现返回键执行home键方法. public boolean onKeyDown(int keyCode, Key ...

  3. PopupWindow 点击外部和返回键无法消失背后的真相(setBackgroundDrawable(Drawable background))

    刚接手PopupWindow的时候,我们都可能觉得很简单,因为它确实很简单,不过运气不好的可能就会踩到一个坑: 点击PopupWindow最外层布局以及点击返回键PopupWindow不会消失 新手在 ...

  4. Android监听返回键、Home键+再按一次返回键退出应用

    Android监听返回键需重写onKeyDown()方法 Home键keyCode==KeyEvent.KEYCODE_HOME @Override public boolean onKeyDown( ...

  5. Android 监听返回键、HOME键

    拦截返回键,HOME键,继承BaseActivity即可 import android.app.Activity; import android.content.BroadcastReceiver; ...

  6. 关于iOS导航控制器隐藏和显示会出现返回键失效,导航栏标题动画异常

    最近做的demo  bug出现了,我觉得这个bug出现得很经典所以贴出来给大家看看, bug演示就是:点击返回键失效出现如下gif图演示的内容 为啥会出现如此奇葩的bug,系统的返回键居然失效了,尴尬 ...

  7. android 返回键 操作

    cocos2dx项目移植到android平台上对于 android手机返回键,主菜单键等键的相关操作,本篇详细对返回键做个简单的介绍说明, 不足不对之处,请同猿们指出. 首先在主activity下,即 ...

  8. 【转】Android实现点击两次返回键退出

    在做安卓应用是我们经常要判断用户对返回键的操作,一般为了防止误操作都是在用户连续按下两次返回键的时候提示用户是否退出应用程序. 第一种实现的基本原理就是,当按下BACK键时,会被onKeyDown捕获 ...

  9. Fragment响应返回键

    Activty可以直接响应返回键,而Fragment却不行,可用如下方式: 创建一个抽象类BackHandledFragment,该类中有一个抽象方法onBackPress(),所有BackHandl ...

随机推荐

  1. TensorFlow 学习(十三)—— tf.app.flags

    flags = tf.app.flags FLAGS = flags.FLAGS flags.DEFINE_integer('num_hidden_layers', 3, 'number of hid ...

  2. 【t087】公共汽车

    Time Limit: 1 second Memory Limit: 128 MB [问题描述] 路人丁成为了一名新公交车司机,每个司机都有一张牌子,牌子的正面写了拥有这个牌子的司机开的线路号,另外一 ...

  3. java-synchronized原理

    介绍 synchronized是一种独占式的重量级锁,在运行到同步方法或者同步代码块的时候,让程序的运行级别由用户态切换到内核态,把所有的线程挂起,通过操作系统的指令,去调度线程.这样会频繁出现程序运 ...

  4. 【BZOJ 1027】[JSOI2007]合金

    [题目链接]:http://www.lydsy.com/JudgeOnline/problem.php?id=1027 [题意] [题解] 因为和为1; 所以只要知道两个属性第三个属性就能用1减出来了 ...

  5. CentOS 配置epel源

    先查询下有没有epel rpm -qa|grep epel 没有的话到官网https://fedoraproject.org/wiki/EPEL下载rpm包 然后 rpm -ivh 安装 安装完毕后到 ...

  6. N 个互异数的数组的平均逆序数

    N 个互异数的数组的平均逆序数为 N(N−1)/4 1. 简单证明 对于任意的数的表 L(5,8,9,6,4),以及其反序表 Lr(4,6,9,8,5),它们各自的逆序数分别为:6 ((5, 4), ...

  7. maven webcollector java.lang.ClassNotFoundException: org.openqa.selenium.remote.SessionNotFoundException

    使用webcollector时出现了如下异常 分析是依赖的问题,不仅要添加selenium-java,还要添加htmlunit-driver的依赖,注意不要添加成selenium-htmlunit-d ...

  8. 支付宝接口(扫码支付的原理)使用文档说明 支付宝异步通知(notify_url)与return_url

    支付宝接口使用文档说明 支付宝异步通知(notify_url)与return_url. 现支付宝的通知有两类. A服务器通知,对应的参数为notify_url,支付宝通知使用POST方式 B页面跳转通 ...

  9. 到底有多少种智能指针(smart pointer)

    最近Qt的blog总结了到底有多少种smart pointer, 下面是一个简要的介绍: 1.   QPointer :提供对指针的保护,当一个指针被删除以后,再使用不会造成野指针或者指针溢出.比如 ...

  10. 浅谈Linux下各种压缩 解压命令和压缩比率对比

    Linux下压缩.解压命令五花八门,不像在windows下一个winrar打遍天下无敌手,清一色的.rar .zip格式. 比如,Linux下常用的tar tar.gz tar.bz2 .Z等等不一而 ...