前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >默认的WPF样式在哪里

默认的WPF样式在哪里

作者头像
黄腾霄
发布于 2020-06-10 03:03:18
发布于 2020-06-10 03:03:18
74400
代码可运行
举报
文章被收录于专栏:黄腾霄的博客黄腾霄的博客
运行总次数:0
代码可运行

我们使用WPF的控件时,.NET framework会为我们提供一些默认的样式


一开始我们会认为这个是依赖属性的默认值。但是实际上并非如此

我们可以通过以下方法看下默认ButtonTemplate属性

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Control.TemplateProperty.GetMetadata(typeof(Button)).DefaultValue

我们神奇的发现,返回值是null

那么不是依赖属性的默认值就是来自于Style

我们试试

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
FrameworkElement.StyleProperty.GetMetadata(typeof(Button)).DefaultValue

返回值也是null

但是我们通过snoop发现他的确是有值的,而且值来自于DefaultStyle

通过以下代码也可以得到类似结果

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DependencyPropertyHelper.GetValueSource(myButton, Button.TemplateProperty).BaseValueSource

关于什么是DefaultStyle,参见theme主题的原理

实际上WPF控件在应用程序中找不到相应的样式时,会从系统中获取样式。

首先查找指定类型所在的程序集(例如Button所在的PresentationFramework),如果程序集定义了ThemeInfo

特性,那么他就会查看ThemeInfoDictionaryLocation的属性值,如果是

  • None :则说明没有特定主题资源
  • SourceAssembly : 则说明特定主题资源在这个程序集内部
  • ExternalAssembly :则说明特定主题资源在外部同名,不同后缀的程序集中(例如resentationFramework.Aero)而这个选择由系统主题决定

而最后,如果这些主题都没有找到,那么程序会在自身的themes/generic.xaml中获取默认的样式。

参考链接:https://www.interact-sw.co.uk/iangblog/2007/02/14/wpfdefaulttemplate


本文会经常更新,请阅读原文: https://xinyuehtx.github.io/post/%E9%BB%98%E8%AE%A4%E7%9A%84WPF%E6%A0%B7%E5%BC%8F%E5%9C%A8%E5%93%AA%E9%87%8C.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名黄腾霄(包含链接: https://xinyuehtx.github.io ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-07-25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
预训练模型助力,真实动画视频生成 | 开源专题 No.92
SadTalker 是一个基于音频驱动的单幅图像对话头像动画生成项目。它可以将单幅人像图像与音频结合,生成逼真的视频对话头像。该项目的主要功能和核心优势包括:
小柒
2024/06/25
1640
预训练模型助力,真实动画视频生成 | 开源专题 No.92
多语言支持 SDK:轻松集成 LLMs 到应用程序 | 开源日报 No.261
semantic-kernel 是一个集成了最新的 LLM 技术(如 OpenAI、Azure OpenAI 和 Hugging Face)与传统编程语言(如 C#、Python 和 Java)的 SDK。该项目主要功能、关键特性和核心优势包括:
小柒
2024/05/17
2210
多语言支持 SDK:轻松集成 LLMs 到应用程序 | 开源日报 No.261
OpenSign:安全可靠的电子签名解决方案 | 开源日报 No.76
这个开源项目是一个为期 12 周的全面课程,由微软云倡导者团队提供。它旨在帮助初学者掌握 JavaScript、CSS 和 HTML 的基础知识。每一节都包括预习和复习测验、详细的书面指南、解决方案、作业等内容。通过以项目为基础的学习方法,该课程旨在帮助您通过实践构建技能,并优化知识积累。
小柒
2023/11/07
8860
OpenSign:安全可靠的电子签名解决方案 | 开源日报 No.76
软件开发自动化到智能文档检索:大语言模型驱动的开源项目盘点 | 开源专题 No.46
这是一个 ChatGPT 代码解释器的开源实现项目,使用了 LangChain 和 CodeBoxes 进行后端沙盒式 Python 代码执行。该项目具有以下特性和优势:
小柒
2023/11/24
4240
软件开发自动化到智能文档检索:大语言模型驱动的开源项目盘点 | 开源专题 No.46
借助 AI 对话文档:100% 私密且无数据泄漏 | 开源日报 No.224
PrivateGPT 是一个可以与您的文档进行交互的项目,利用 GPT 的强大功能,100% 私密且无数据泄漏。
小柒
2024/04/01
1520
借助 AI 对话文档:100% 私密且无数据泄漏 | 开源日报 No.224
实时语音克隆:5 秒内生成任意文本的语音 | 开源日报 No.84
这个开源项目是一个实时语音克隆工具,可以在5秒内复制一种声音,并生成任意文本的语音。
小柒
2023/11/15
4390
实时语音克隆:5 秒内生成任意文本的语音 | 开源日报 No.84
开源日报 0817:以太坊实现、语言模型应用与实用工具
Go Ethereum 是以太坊协议的官方 Golang 执行层实现,可运行各种节点并提供网关访问以太坊网络;LangChain-Chatchat 是基于大语言模型的本地知识库问答应用实现,支持离线运行和多种模型接入;Shiori 是简单易用的书签管理器,支持命令行和 Web 应用程序,且可移植性强;Awesome Generative AI 是精选的生成式人工智能项目和服务列表,用于生成原创内容;DoctorGPT 是功能强大的语言模型,免费离线使用,适用于成为个人医生;Conferences 是会议演讲资料的存储库,方便查找和分享。
小柒
2023/09/02
2380
开源日报 0817:以太坊实现、语言模型应用与实用工具
区块链项目大揭秘,优势各异创未来 | 开源专题 No.79
Namada 是一个基于权益证明的 L1 跨链资产无关隐私平台。它使用 CometBFT 共识,支持任何本地或非本地资产的多资产隐蔽转账,并具有完整的 IBC 协议支持、内置以太坊桥接器、现代化权益证明系统 (自动奖励复利和三次减少)、以及基于股份加权的治理信号机制。并提供了一款多资产保护传输钱包,以便安全且私密地与该协议交互。
小柒
2024/05/17
1900
区块链项目大揭秘,优势各异创未来 | 开源专题 No.79
可无限定制的命令行提示工具:适用任何 Shell 和操作系统 | 开源日报 No.267
Starship 是一个极简、快速且可无限定制的命令行提示工具,可以在任何 shell 和操作系统上使用。其主要功能包括提供高度自定义的提示配置,并以一目了然的方式显示相关信息。
小柒
2024/05/29
1220
可无限定制的命令行提示工具:适用任何 Shell 和操作系统 | 开源日报 No.267
Zulip:开源团队协作工具,高效沟通与远程办公 | 开源日报 No.126
Zulip 是一个开源的团队协作工具,拥有独特的基于主题的线程功能,结合了电子邮件和聊天的优点,使远程工作更加高效和愉快。它是唯一设计用于实时和异步对话的现代团队聊天应用程序。其核心优势包括:
小柒
2023/12/26
4640
Zulip:开源团队协作工具,高效沟通与远程办公 | 开源日报 No.126
完全可定制的富文本编辑器:逻辑清晰,插件赋能 | 开源日报 No.218
Slate 解决了其他富文本库存在的问题,并基于几个原则:插件优先、无固定模式核心逻辑、嵌套文档模型和与 DOM 并行。
小柒
2024/03/19
2130
完全可定制的富文本编辑器:逻辑清晰,插件赋能 | 开源日报 No.218
无头富文本编辑器:框架无关,自由扩展 | 开源日报 No.300
tiptap 是一个面向 Web 开发者的无头富文本编辑器框架,基于可靠的 ProseMirror 库构建。它的核心优势在于:
小柒
2024/07/22
1440
无头富文本编辑器:框架无关,自由扩展 | 开源日报 No.300
Apache 开源现代数据编排平台:低代码易使用、高性能高可用 | 开源日报 No.264
Apache DolphinScheduler 是一款现代数据编排平台,具有低代码高性能工作流的敏捷创建能力。其主要功能和核心优势包括:
小柒
2024/05/29
3280
Apache 开源现代数据编排平台:低代码易使用、高性能高可用 | 开源日报 No.264
开源版 Sora:AI 视频生成的高性能实现 | 开源日报 No.291
Open-Sora 是一个开源项目,提供了类似于 OpenAI 的 Sora 的视频生成模型的高性能实现。该项目的主要功能和核心优势包括:
小柒
2024/07/10
1950
开源版 Sora:AI 视频生成的高性能实现 | 开源日报 No.291
构建、更改和自动化管理基础架构的高效工具 | 开源日报 0831
Terraform 是一个用于安全高效地构建、更改和版本化基础架构的工具。它可以管理现有且流行的服务提供商以及自定义内部解决方案。
小柒
2023/09/02
1950
构建、更改和自动化管理基础架构的高效工具 | 开源日报 0831
GPT-4o 客户端替代方案:支持屏幕阅读、麦克风交互 | 开源日报 No.277
gpt-computer-assistant 是一个为 Windows、macOS 和 Ubuntu 提供的 GPT-4o 替代方案。 该项目旨在为用户提供 ChatGPT MacOS 应用程序的替代品,支持在 Windows 和 Linux 系统上运行。 主要功能和优势包括:
小柒
2024/06/13
2820
GPT-4o 客户端替代方案:支持屏幕阅读、麦克风交互 | 开源日报 No.277
打造你的专属云开发环境:支持任意 IDE,任意云服务 | 开源日报 No.215
devpod 是一个开源的、仅限客户端的、不受限制的工具,可以与任何集成开发环境(IDE)一起使用,并允许您在任何云端、Kubernetes 或本地 Docker 上进行开发。
小柒
2024/03/18
3110
打造你的专属云开发环境:支持任意 IDE,任意云服务 | 开源日报 No.215
Ventoy:打造你的万能启动 U 盘 | 开源日报 No.146
Ventoy 是一个开源工具,用于创建支持 ISO/WIM/IMG/VHD(x)/EFI 文件的可启动 USB 驱动器。其主要功能包括将镜像文件复制到 USB 驱动器并进行引导、一次性复制多个镜像文件并提供引导菜单选择以及在本地磁盘中浏览和引导 ISO/WIM/IMG/VHD(x)/EFI 文件等。该项目的核心优势和关键特点包括:
小柒
2024/01/07
3700
Ventoy:打造你的万能启动 U 盘 | 开源日报 No.146
最佳照片管理应用!AI 赋能,私有部署 | 开源日报 No.211
photoprism 是一个基于人工智能的照片应用程序,适用于去中心化网络。它利用最新技术自动标记和查找图片,无需干扰用户。该项目具有以下主要功能和优势:
小柒
2024/03/18
4110
最佳照片管理应用!AI 赋能,私有部署 | 开源日报 No.211
Diagrams 图表即代码:用代码绘制云系统架构 | 开源日报 0910
Diagrams 是一个以代码形式绘制云系统架构的工具,贯穿“图表即代码”的理念。它可以在没有任何设计工具的情况下对新系统架构设计进行原型设计,还可以描述或可视化现有的系统架构。Diagram 支持主要提供商包括:AWS、Azure、GCP、Kubernetes 等,并且还支持 On-Premise 节点、SaaS 和主要编程框架和语言。Diagram as Code 允许您在任何版本控制系统中跟踪体系结构图变更。
小柒
2023/09/14
3170
Diagrams 图表即代码:用代码绘制云系统架构 | 开源日报 0910
推荐阅读
预训练模型助力,真实动画视频生成 | 开源专题 No.92
1640
多语言支持 SDK:轻松集成 LLMs 到应用程序 | 开源日报 No.261
2210
OpenSign:安全可靠的电子签名解决方案 | 开源日报 No.76
8860
软件开发自动化到智能文档检索:大语言模型驱动的开源项目盘点 | 开源专题 No.46
4240
借助 AI 对话文档:100% 私密且无数据泄漏 | 开源日报 No.224
1520
实时语音克隆:5 秒内生成任意文本的语音 | 开源日报 No.84
4390
开源日报 0817:以太坊实现、语言模型应用与实用工具
2380
区块链项目大揭秘,优势各异创未来 | 开源专题 No.79
1900
可无限定制的命令行提示工具:适用任何 Shell 和操作系统 | 开源日报 No.267
1220
Zulip:开源团队协作工具,高效沟通与远程办公 | 开源日报 No.126
4640
完全可定制的富文本编辑器:逻辑清晰,插件赋能 | 开源日报 No.218
2130
无头富文本编辑器:框架无关,自由扩展 | 开源日报 No.300
1440
Apache 开源现代数据编排平台:低代码易使用、高性能高可用 | 开源日报 No.264
3280
开源版 Sora:AI 视频生成的高性能实现 | 开源日报 No.291
1950
构建、更改和自动化管理基础架构的高效工具 | 开源日报 0831
1950
GPT-4o 客户端替代方案:支持屏幕阅读、麦克风交互 | 开源日报 No.277
2820
打造你的专属云开发环境:支持任意 IDE,任意云服务 | 开源日报 No.215
3110
Ventoy:打造你的万能启动 U 盘 | 开源日报 No.146
3700
最佳照片管理应用!AI 赋能,私有部署 | 开源日报 No.211
4110
Diagrams 图表即代码:用代码绘制云系统架构 | 开源日报 0910
3170
相关推荐
预训练模型助力,真实动画视频生成 | 开源专题 No.92
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验