TitleBarDemo.xaml

<Page
x:Class="Windows10.UI.TitleBarDemo"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:Windows10.UI"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"> <Grid Background="Transparent">
<StackPanel Margin="10 0 10 10"> <TextBlock Name="lblMsg" Margin="0 10 0 0" /> <Button Name="btnTitle" Content="改变标题" Click="btnTitle_Click" Margin="0 10 0 0" /> <Button Name="btnColor" Content="改变颜色" Click="btnColor_Click" Margin="0 10 0 0" /> <Button Name="btnBack" Content="显示/隐藏返回按钮" Click="btnBack_Click" Margin="0 10 0 0" /> <Button Name="btnHidden" Content="显示/隐藏标题栏" Click="btnHidden_Click" Margin="0 10 0 0" /> <Button Name="btnFullScreen" Content="全屏/取消全屏" Click="btnFullScreen_Click" Margin="0 10 0 0" /> </StackPanel>
</Grid>
</Page>

TitleBarDemo.xaml.cs

/*
* 演示 TitleBar 相关知识点
*
* 通过 ApplicationView.GetForCurrentView().TitleBar 获取当前的 ApplicationViewTitleBar
* 通过 CoreApplication.GetCurrentView().TitleBar 获取当前的 CoreApplicationViewTitleBar
*
* 注:手工测量 TitleBar 高度为 32 像素
*/ using System;
using Windows.ApplicationModel.Core;
using Windows.UI;
using Windows.UI.Core;
using Windows.UI.ViewManagement;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls; namespace Windows10.UI
{
public sealed partial class TitleBarDemo : Page
{
public TitleBarDemo()
{
this.InitializeComponent(); this.Loaded += TitleBarDemo_Loaded;
} private void TitleBarDemo_Loaded(object sender, RoutedEventArgs e)
{ } // 改变 Title
private void btnTitle_Click(object sender, RoutedEventArgs e)
{
// 改变左上角 Title 的显示内容
ApplicationView.GetForCurrentView().Title = $"My Title Bar({new Random().Next(1000, 10000).ToString()})";
} // 改变 TitleBar 上的相关颜色
private void btnColor_Click(object sender, RoutedEventArgs e)
{
// 获取当前的 ApplicationViewTitleBar
ApplicationViewTitleBar titleBar = ApplicationView.GetForCurrentView().TitleBar; if (titleBar.BackgroundColor != Colors.Orange)
{
// 背景色
titleBar.BackgroundColor = Colors.Orange;
// 前景色
titleBar.ForegroundColor = Colors.White;
// 窗口为非活动状态时的背景色(活动状态就是焦点在窗口上,非活动状态就是焦点不在窗口上)
titleBar.InactiveBackgroundColor = Colors.Yellow;
// 窗口为非活动状态时的前景色
titleBar.InactiveForegroundColor = Colors.Gray; // TitleBar 上的按钮的背景色(按钮包括:最小化按钮,最大化按钮,关闭按钮,返回按钮)
titleBar.ButtonBackgroundColor = Colors.Orange;
// TitleBar 上的按钮的鼠标经过的背景色
titleBar.ButtonHoverBackgroundColor = Colors.Blue;
// TitleBar 上的按钮的鼠标按下的背景色
titleBar.ButtonPressedBackgroundColor = Colors.Green;
// TitleBar 上的按钮的非活动状态的背景色
titleBar.ButtonInactiveBackgroundColor = Colors.Yellow; // TitleBar 上的按钮的前景色
titleBar.ButtonForegroundColor = Colors.White;
// TitleBar 上的按钮的鼠标经过的前景色
titleBar.ButtonHoverForegroundColor = Colors.Red;
// TitleBar 上的按钮的鼠标按下的前景色
titleBar.ButtonPressedForegroundColor = Colors.Purple;
// TitleBar 上的按钮的非活动状态的前景色
titleBar.ButtonInactiveForegroundColor = Colors.Gray;
}
else
{
titleBar.BackgroundColor = null;
titleBar.ForegroundColor = null;
titleBar.InactiveBackgroundColor = null;
titleBar.InactiveForegroundColor = null; titleBar.ButtonBackgroundColor = null;
titleBar.ButtonHoverBackgroundColor = null;
titleBar.ButtonPressedBackgroundColor = null;
titleBar.ButtonInactiveBackgroundColor = null; titleBar.ButtonForegroundColor = null;
titleBar.ButtonHoverForegroundColor = null;
titleBar.ButtonPressedForegroundColor = null;
titleBar.ButtonInactiveForegroundColor = null;
}
} // 显示或隐藏 TitleBar 左上角的返回按钮
private void btnBack_Click(object sender, RoutedEventArgs e)
{
// 当前 TitleBar 左上角的返回按钮是隐藏状态
if (SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility == AppViewBackButtonVisibility.Collapsed)
{
// 显示 TitleBar 左上角的返回按钮
SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = AppViewBackButtonVisibility.Visible;
// 监听 TitleBar 左上角的返回按钮的点击事件
SystemNavigationManager.GetForCurrentView().BackRequested += TitleBarDemo_BackRequested;
}
else
{
SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = AppViewBackButtonVisibility.Collapsed;
SystemNavigationManager.GetForCurrentView().BackRequested -= TitleBarDemo_BackRequested;
}
}
// 处理 TitleBar 左上角的返回按钮的点击事件
private void TitleBarDemo_BackRequested(object sender, BackRequestedEventArgs e)
{
if (MainPage.Current.Container.CanGoBack)
MainPage.Current.Container.GoBack();
} // 显示或隐藏 TitleBar
private void btnHidden_Click(object sender, RoutedEventArgs e)
{
// 切换 TitleBar 的显示/隐藏状态
// 注:TitleBar 隐藏时,仍会显示最小化按钮、最大化按钮、关闭按钮
CoreApplication.GetCurrentView().TitleBar.ExtendViewIntoTitleBar ^= true; /*
* 如果需要自定义 TitleBar 的话,就隐藏它,然后自定义一个自己的即可
* 要注意 TitleBar 的 Height, SystemOverlayLeftInset, SystemOverlayRightInset
* 要注意如果收到 CoreApplicationViewTitleBar.LayoutMetricsChanged 事件,则 Height, SystemOverlayLeftInset, SystemOverlayRightInset 的值可能发生了变化
* 要注意窗口大小发生变化时的处理
*/
CoreApplicationViewTitleBar titleBar = CoreApplication.GetCurrentView().TitleBar;
// Height - TitleBar 的高度
// SystemOverlayLeftInset - TitleBar 浮层左侧的间隔,在这个间隔部分不要放置自定义内容
// SystemOverlayRightInset - TitleBar 浮层右侧的间隔,在这个间隔部分不要放置自定义内容(右侧间隔部分是用于放置最小化按钮,最大化按钮,关闭按钮的。经过测试这个间隔明显多出来一些,也许是预留给其他按钮的)
lblMsg.Text = $"titleBarHeight: {titleBar.Height}, titleBarLeftInset: {titleBar.SystemOverlayLeftInset}, titleBarRightInset: {titleBar.SystemOverlayRightInset}";
} // 进入全屏模式,退出全屏模式
private void btnFullScreen_Click(object sender, RoutedEventArgs e)
{
ApplicationView view = ApplicationView.GetForCurrentView();
// 判断当前是否是全屏模式
if (view.IsFullScreenMode)
{
// 退出全屏模式
view.ExitFullScreenMode();
lblMsg.Text = "退出全屏模式";
}
else
{
// 尝试进入全屏模式
bool isSuccess = view.TryEnterFullScreenMode();
if (isSuccess)
{
lblMsg.Text = "进入全屏模式";
}
else
{
lblMsg.Text = "尝试进入全屏模式失败";
}
} // 注意,进入全屏模式后,TitleBar 会消失,鼠标移动到顶部,则 TitleBar 会再次出现(当然这个行为的具体表现取决于 FullScreenSystemOverlayMode,参见 FullScreen.xaml)
CoreApplicationViewTitleBar titleBar = CoreApplication.GetCurrentView().TitleBar;
// TitleBar 是否是可见状态
bool titleBarIsVisible = titleBar.IsVisible;
// TitleBar 的可见性发生变化时触发的事件
titleBar.IsVisibleChanged += delegate { };
}
}
}

UI: 标题栏的更多相关文章

  1. 背水一战 Windows 10 (5) - UI: 标题栏

    [源码下载] 背水一战 Windows 10 (5) - UI: 标题栏 作者:webabcd 介绍背水一战 Windows 10 之 UI 标题栏 示例TitleBarDemo.xaml <P ...

  2. 上门洗车APP --- Androidclient开发 之 项目结构介绍

    上门洗车APP --- Androidclient开发 之 项目结构介绍 前言 尽管公司项目较紧,但还是抽空给大家继续更新. o_O"~ 欢迎大家的关注,非常高兴和大家共同学习.前面给大家分 ...

  3. 【Android UI】自定义带按钮的标题栏

    自定义标题栏在很多的android app中很常见,可以说是一种很有用的UI设计方法.自 己也本着学习的态度,经过一番各种坑,终于实现了,现总结如下: 一:大致流程 1.      对指定的andro ...

  4. 【Android UI设计与开发】8.顶部标题栏(一)ActionBar 奥义·详解

    一.ActionBar介绍 在Android 3.0中除了我们重点讲解的Fragment外,Action Bar也是一个非常重要的交互元素,Action Bar取代了传统的tittle bar和men ...

  5. 【Android UI设计与开发】8.顶部标题栏(一)ActionBar 奥义·详解

    一.ActionBar介绍 在Android 3.0中除了我们重点讲解的Fragment外,Action Bar也是一个非常重要的交互元素,Action Bar取代了传统的tittle bar和men ...

  6. UWP中实现自定义标题栏

    UWP中实现自定义标题栏 0x00 起因 在UWP开发中,有时候我们希望实现自定义标题栏,例如在标题栏中加入搜索框.按钮之类的控件.搜了下资料居然在一个日文网站找到了一篇介绍这个主题的文章: http ...

  7. Android中通过ActionBar为标题栏添加搜索以及分享视窗

    在Android3.0之后,Google对UI导航设计上进行了一系列的改革,其中有一个非常好用的新功能就是引入的ActionBar,他用于取代3.0之前的标题栏,并提供更为丰富的导航效果.Action ...

  8. 【Win10 应用开发】自定义应用标题栏

    Win 10 app对窗口标题栏的自定义包括两个层面:一是只定义标题中各部分的颜色,如标题栏上文本的颜色.三个系统按钮(最大化,最小化,关闭)的背景颜色等:另一层是把窗口的可视区域直接扩展到标题栏上, ...

  9. WPF 自定义标题栏 自定义菜单栏

    自定义标题栏 自定义列表,可以直接修改WPF中的ListBox模板,也用这样类似的效果.但是ListBox是不能设置默认选中状态的. 而我们需要一些复杂的UI效果,还是直接自定义控件来的快 GitHu ...

随机推荐

  1. iOS 疑难杂症 — — 在 Storyboard 里 Add Size Class Customization 后再从代码里无法修改的问题

    前言 公司的产品同时适配 iPhone 和 iPad ,并坚持用 Storyboard 来做适配,今天又踩一个坑(以前遇到过)还以为是 XCode 的鬼毛病. 声明  欢迎转载,但请保留文章原始出处: ...

  2. 敏捷开发与jira之阶段工作项概述

    每次迭代都分这5个阶段,但每个阶段的时间根据版本情况定,最终目标是:第一个阶段拿到交付范围,在第五个阶段都完成,并拿到本次版本团队所消耗的工时. Jira是项目过程管理的一种手段,跟多体现在工时跟踪, ...

  3. maven工程模块化

    前言 项目的模块化有利于任务分工,后期维护,易扩展,模块还可以独立成服务单独部署等: 创建packaging类型为POM的父项目 我用的maven插件是m2e,相信大部分人在eclipse装的也是m2 ...

  4. sp_executesql得到执行sql语句的返回值

    执行 sql语句,得到 变量的值 ' declare @Partition int; ); ); SET @SQLString = N'SELECT @RangeKeyOUT = $PARTITION ...

  5. Linux Tomcat 6.0安装配置实践总结

    系统环境: Red Hat Enterprise Linux Server release 5.7 (Tikanga)  64位 Tomcat下载 从官方网站 http://tomcat.apache ...

  6. 化繁为简——分解复杂的SQL语句

    今天同事咨询一个SQL语句,如下所示,SQL语句本身并不复杂,但是执行效率非常糟糕,糟糕到一塌糊涂(执行计划也是相当复杂).如果查询条件中没有NOT EXISTS部分,倒是不要一秒就能查询出来. SE ...

  7. [翻译]当分发数据库增长到25G时如何解决

    有时候,分发数据库(Distribution Database)会增长得非常大,那么如何解决呢,请看Chris Skorlinski,  Microsoft SQL Server Escalation ...

  8. 0030 Java学习笔记-面向对象-垃圾回收、(强、软、弱、虚)引用

    垃圾回收特点 垃圾:程序运行过程中,会为对象.数组等分配内存,运行过程中或结束后,这些对象可能就没用了,没有变量再指向它们,这时候,它们就成了垃圾,等着垃圾回收程序的回收再利用 Java的垃圾回收机制 ...

  9. kobject.c 添加注释

    最近结合<Linux Device Drivers>对kobject的理解,对kobject.c文件添加注释,仅供参考! 1 /**  2  *    populate_dir - pop ...

  10. spring mvc 快速入门

    ---------- 转自尚学堂 高淇 --------- Spring  MVC 背景介绍 Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块.使用 Spring 可插入的 MVC ...