当前位置: 首页 > news >正文

WinUI3_设置原生态标题栏样式

简介

Windows原生态标题栏是基于Windows SDK自带的样式标题栏,非用户自定义标题栏,当用户使用ExtendsContentIntoTitleBar时Windows会将窗口区域(也就是客户区内容)里的内容样式扩展到标题栏里,也就是替换掉Windows原生态标题栏的样式了,标题和图标会消失但关闭按钮、最大化按钮、最小化按钮并不会,因为最大化和最小化、关闭按钮在Windows里被定义为属于非客户区内容,这几个组件会被保留,但是动画效果就没了。因为当你使用ExtendsContentIntoTitleBar接管标题栏区域后它的动画样式也一并被接管了,系统只保留非客户区的三个组件最大化最小化和关闭按钮以外的所有系统样式都会被取消,也就出现当我们使用ExtendsContentIntoTitleBar之后最大化最小化和关闭按钮没有淡入淡出动画了,也就是视觉效果后退了。
最好的解决方案是使用PreferredHeightOption将属性设置为Collapsed然后自己完全绘制最大化最小化和关闭按钮,这样动画效果也就有了,但是自己定义的话需要自己去实现snap layouts,这个较为麻烦,但还有一种方法,就是在你窗口使用系统主题色时,将标题栏样式也更改为主题色,这样既让Windows帮我们处理原生态动画和snap layouts也能让整体看起来更协调美观。

Tips
使用此方法需要确保你的Windows SDK版本在1.7以上,可以通过NuGet升级

使用方法

下面代码是一个开启mica效果的窗口
在这里插入图片描述
可以看到标题栏样式非常不融洽,接下来使用PreferredTheme修改一下标题栏样式,我的系统主题是深色:
首先需要包含对应的头文件:

#include <winrt/Microsoft.UI.Windowing.h>
#include <winrt/impl/Microsoft.UI.Windowing.0.h>
using namespace winrt::Microsoft::UI::Windowing;

然后使用PreferredTheme修改一下主题色:

this->AppWindow().TitleBar().PreferredTheme(TitleBarTheme::Dark);

效果如下:
在这里插入图片描述
可以看到非常融洽,如果想要跟随主题色可以使用UseDefaultAppMode来自适应主题色。
同时snap layouts布局也支持
在这里插入图片描述

Tips
该效果在Mica Alt下不是很和谐,Mica Alt主要是深色,而系统标题栏仅支持默认的Dark和Light,如果使用Mica Alt的话标题栏看起来会有层次感
其主要原因是因为窗口区域使用的是Mica Alt,而标题栏则是使用的是Base Mica在这里插入图片描述

http://www.lqws.cn/news/516961.html

相关文章:

  • 9.11 Indoor localization based on factor graphs: A unified framework
  • OCR表格识别效果对比
  • GaussDB实例级自动备份策略:构建数据安全的“自动防护网”
  • 一步部署APache编译安装脚本
  • 在IIS上运行PHP时显示PHP错误信息
  • 支持PY普冉系列单片机调试工具PY32linK仿真器
  • BT138-600-ASEMI智能家电专用BT138-600
  • Cookie 在 HTTP 中的作用HTTP 中的状态码
  • 网络协议 / 加密 / 签名总结
  • Mysql8.0版本未卸载干净如何重新下载
  • Go 语言并发编程
  • web安全之h2注入系统学习
  • GC2803:八通道NPN达林顿管的高效驱动解决方案
  • 无人机灯光驱动模块技术解析
  • 内存条与CPU三级缓存之间的区别
  • HarmonyOS 应用权限管控流程
  • 异步爬虫 原理与解析
  • RabbitMq中启用NIO
  • Android14音频子系统 - 系统框架概述
  • Python爬取TMDB电影数据:从登录到数据存储的全过程
  • 康谋方案 | ARXML 规则下 ECU 总线通讯与 ADTF 测试方案
  • JMeter中变量如何使用?
  • 标题:2025金融护网行动实战指南:从合规防御到智能免疫的体系化进阶
  • C++ 多线程深度解析:掌握并行编程的艺术与实践
  • 自动化测试--App自动化之项目实战脚本编写及封装流程
  • Linux 怎么恢复sshd.service
  • python的智慧养老院管理系统
  • TensorFlow Lite (TFLite) 和 PyTorch Mobile模型介绍1
  • Azure 自动化:所需状态配置 (DSC)
  • VS Git巨坑 切换分支失败导致原分支被修改