【Win10 应用开发】自定义应用标题栏
Win 10 app对窗口标题栏的自定义包括两个层面:一是只定义标题中各部分的颜色,如标题栏上文本的颜色、三个系统按钮(最大化,最小化,关闭)的背景颜色等;另一层是把窗口的可视区域直接扩展到标题栏上,当然三个系统按钮是保留的。也可以用某个UI元素来作为标题栏来呈现。
先看最简单的一层,即设置标题栏各部分的颜色。
ApplicationView类表示当前应用程序视图相关操作,它公开了一个TitleBar属性,访问该属性可以获取到一个ApplicationViewTitleBar实例,通过该ApplicationViewTitleBar实例的公共属性,可以设置各部分的颜色。
其实这些属性,你看它的名字就知道干吗用的,这里老周只是简单划分一下。
|
BackgroundColor ForegroundColor |
标题栏的背景色和前景色。背景色是标题栏的颜色,前景色是标题栏上显示的标题文本的颜色。 |
|
InactiveBackgroundColor InactiveForegroundColor |
当窗口处于非活动状态时,标题栏的背景色与前景色。和上一行中的属性相对,上一行中的属性是窗口在活动状态时的颜色。 |
|
ButtonBackgroundColor ButtonForegroundColor |
当窗口处于活动状态时,右边的三个按钮的背景色和前景色。 |
|
ButtonInactiveBackgroundColor ButtonInactiveForegroundColor |
当窗口处于非活动状态时,标题栏右边的三个按钮的颜色。 |
|
ButtonHoverBackgroundColor ButtonHoverForegroundColor |
当鼠标移到按钮上时的颜色。 |
|
ButtonPressedBackgroundColor ButtonPressedForegroundColor |
当按钮被按下时的颜色。 |
上表中的各属性的含义,老周就不说了,弄个表格出来已经很厚道了,你懂的,老周最讨厌把某个类的成员列表格的;老周也很讨厌抄袭MSDN的书。
接下来,就有一个问题了。其实设置这些颜色的代码不难写,重点是这些自定义代码该放到哪里。因为是自定义当前视图的外观的代码,注意这些设置只能是当前视图下的,如果你新建了新视图,还要重新设置外观。比较合理的位置是放到应用程序级别的代码中。当然,如果你能保证某个页面是应用程序的主页面,也可以写到页面的代码里。
App类有两个地方可以写,一个是App的构造函数内,经测试,此处发生异常。所以,也只有一处可用了,就是OnLaunch方法。
下面给个例子,很是TNND简单,代码放在OnLaunch方法中。
ApplicationView view = ApplicationView.GetForCurrentView();
ApplicationViewTitleBar bar = view.TitleBar;
bar.BackgroundColor = Colors.Green;
bar.ForegroundColor = Colors.Yellow;
bar.ButtonBackgroundColor = Colors.DarkGoldenrod;
bar.ButtonForegroundColor = Colors.DarkBlue;
bar.ButtonHoverBackgroundColor = Colors.LightYellow;
bar.ButtonHoverForegroundColor = Colors.Pink;
bar.ButtonPressedBackgroundColor = Colors.Orange;
bar.ButtonPressedForegroundColor = Colors.Purple;
是吧,很简单,找到对应的属性,拼命地赋值就行了。你没有赋值的属性就采用系统默认的颜色。
然后看看结果。

有一点,你可以注意到:当鼠标移到关闭按钮上时,它的背景始终是红色,无论你怎么改都一样。
好了,上面的例子完结,下面我们看看如何将应用程序的可视区域伸展到标题栏中。
同样,在App类的OnLaunch方法中加入以下代码:
ApplicationView view = ApplicationView.GetForCurrentView();
var bar = view.TitleBar;
bar.ButtonBackgroundColor = Colors.Blue;
bar.ButtonForegroundColor = Colors.White;
bar.ButtonHoverBackgroundColor = Colors.SkyBlue; CoreApplicationView coreappview = CoreApplication.GetCurrentView();
coreappview.TitleBar.ExtendViewIntoTitleBar = true;
通过CoreApplication.GetCurrentView静态方法,可以得到表示当前视图的CoreApplicationView实例,再通过以下语句,把ExtendViewIntoTitleBar设置为true,表示允许窗口的可视部分扩展到标题栏上。
coreappview.TitleBar.ExtendViewIntoTitleBar = true;
得到效果如下图所示:
大概有些时候,仅仅扩充到标题栏还不够,可能希望自定义一下标题栏。上面的代码已经允许可视区域扩展到标题栏,接下来我们只需要定义一下自定义标题栏的内容,然后通过Window类就可以自定义为标题栏了。
现在,我们设计一些主页面的UI。
<Grid Background="#FFD3CA94">
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition/>
</Grid.RowDefinitions>
<StackPanel Name="tbar" Background="#FF916A88" Orientation="Horizontal">
<Button Background="Blue">
<SymbolIcon Symbol="Back"/>
</Button>
<Button Background="Green">
<SymbolIcon Symbol="Forward"/>
</Button>
<TextBlock Margin="16,0,0,0" VerticalAlignment="Center" Text="我的应用" Foreground="White" />
</StackPanel> <TextBlock Text="My App" FontSize="100" Grid.Row="1"/>
</Grid>
然后在页面的代码中,将StackPanel元素作为标题栏。
public MainPage()
{
this.InitializeComponent(); Window.Current.SetTitleBar(this.tbar);
}
调用SetTitleBar方法可以将某个UI元素设置为标题栏的内容。
得到的结果如下:

好,扯完了,肚子饿了,开饭。
【Win10 应用开发】自定义应用标题栏的更多相关文章
- Win10 UWP开发系列:使用VS2015 Update2+ionic开发第一个Cordova App
安装VS2015 Update2的过程是非常曲折的.还好经过不懈的努力,终于折腾成功了. 如果开发Cordova项目的话,推荐大家用一下ionic这个框架,效果还不错.对于Cordova.PhoneG ...
- 【Win10】开发中的新特性及原有的变更
声明:本文内容适用于 Visual Studio 2015 RC 及 Windows 10 10069 SDK 环境下,若以后有任何变更,请以新的特性为准. 一.Password 控件的小眼睛属性的变 ...
- Win10/UWP开发—使用Cortana语音与App后台Service交互
上篇文章中我们介绍了使用Cortana调用前台App,不熟悉的移步到:Win10/UWP开发—使用Cortana语音指令与App的前台交互,这篇我们讲讲如何使用Cortana调用App的后台任务,相比 ...
- [转]jquery开发自定义的插件总结
本文转自:http://www.cnblogs.com/Jimmy009/archive/2013/01/17/jquery%E6%8F%92%E4%BB%B6.html 前几天在玩jquery,今天 ...
- 基于Spring的可扩展Schema进行开发自定义配置标签支持
一.背景 最近和朋友一起想开发一个类似alibaba dubbo的功能的工具,其中就用到了基于Spring的可扩展Schema进行开发自定义配置标签支持,通过上网查资料自己写了一个demo.今天在这里 ...
- Win 10 开发中Adaptive磁贴模板的XML文档结构,Win10 应用开发中自适应Toast通知的XML文档结构
分享两篇Win 10应用开发的XML文档结构:Win 10 开发中Adaptive磁贴模板的XML文档结构,Win10 应用开发中自适应Toast通知的XML文档结构. Win 10 开发中Adapt ...
- BizTalk开发系列(二十二) 开发自定义Map Functoid
尽管 BizTalk Server 提供许多Functoid以支持一系列不同的操作,但仍可能会遇到需要其他方法的情况.<BizTalk开发系列 Map扩展开发>介绍了通过使用自定义 XSL ...
- IOS 入门开发之创建标题栏UINavigationBar的使用(二)
IOS 入门开发之创建标题栏UINavigationBar的使用 http://xys289187120.blog.51cto.com/3361352/685746 IOS 开发有关界面的东西 ...
- WPF 之 自定义窗体标题栏
在WPF中自定义窗体标题栏,首先需要将窗体的WindowStyle属性设置为None,隐藏掉WPF窗体的自带标题栏.然后可以在窗体内部自定义一个标题栏. 例如,标题栏如下: <WrapPanel ...
随机推荐
- 告别被拒,如何提升iOS审核通过率(上篇)
iOS审核一直是每款移动产品上架苹果商店时面对的一座大山,每次提审都像是一次漫长而又悲壮的旅行,经常被苹果拒之门外,无比煎熬.那么问题来了,我们有没有什么办法准确把握苹果审核准则,从而提升审核的通过率 ...
- 0.Win8.1,Win10,Windows Server 2012 安装 Net Framework 3.5
后期会在博客首发更新:http://dnt.dkill.net 网站部署之~Windows Server | 本地部署:http://www.cnblogs.com/dunitian/p/482280 ...
- 46张PPT讲述JVM体系结构、GC算法和调优
本PPT从JVM体系结构概述.GC算法.Hotspot内存管理.Hotspot垃圾回收器.调优和监控工具六大方面进行讲述.(内嵌iframe,建议使用电脑浏览) 好东西当然要分享,PPT已上传可供下载 ...
- MVC如何使用开源分页插件shenniu.pager.js
最近比较忙,前期忙公司手机端接口项目,各种开发+调试+发布现在几乎上线无问题了:虽然公司项目忙不过在期间抽空做了两件个人觉得有意义的事情,一者使用aspnetcore开发了个人线上项目(要说线上其实只 ...
- [开发笔记]GCC 分支预测优化
#define likely(x) __builtin_expect(!!(x),1)#define unlikely(x) __builtin_expect(!!(x),0) 用于优化在做分支判断的 ...
- iOS UITableView 与 UITableViewController
很多应用都会在界面中使用某种列表控件:用户可以选中.删除或重新排列列表中的项目.这些控件其实都是UITableView 对象,可以用来显示一组对象,例如,用户地址薄中的一组人名.项目地址. UITab ...
- bzoj1901--树状数组套主席树
树状数组套主席树模板题... 题目大意: 给定一个含有n个数的序列a[1],a[2],a[3]--a[n],程序必须回答这样的询问:对于给定的i,j,k,在a[i],a[i+1],a[i+2]--a[ ...
- Hacker Rank: Two Strings - thinking in C# 15+ ways
March 18, 2016 Problem statement: https://www.hackerrank.com/challenges/two-strings/submissions/code ...
- linux常用命令(1)cd命令
1 命令格式:cd [目录名]2 命令功能切换当前目录至dirName3 常用范例3.1 进入系统根目录cd /3.2 进入上级目录cd .. 或者 cd ..//3.3 进入当前用户主目录当前用 ...
- 【repost】JS错误类型的学习
SyntaxError是解析代码时发生的语法错误 // 变量名错误 var 1a; // 缺少括号 console.log 'hello'); (2)ReferenceError Referen ...