WPF——如何为项目设置全局样式。
在项目中,需要为所有的Button、TextBox设置一个默认的全局样式,一个个的为多个控件设置相同的样式显然是不明智的。在WPF中可以通过资源设置全局样式,主要有俩种方法:
1.第一种就是先写好按钮的样式,不写Key,然后在App.xaml中引用。
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Style TargetType="{x:Type CheckBox}" />
</ResourceDictionary>
<!-- 默认Button样式 -->
<ResourceDictionary Source="pack://application:,,,/Resources/ButtonStyle/BasicButton.xaml" />
<!-- 默认TextBox样式 -->
<ResourceDictionary Source="pack://application:,,,/Resources/TextBoxStyleBasic/TextBoxStyleBasic.xaml" />
<!-- 默认CheckBox样式 -->
<ResourceDictionary Source="pack://application:,,,/Resources/ButtonStyle/BasicCheckbox.xaml" />
<!-- 默认滚动条样式 -->
<ResourceDictionary Source="pack://application:,,,/Resources/ControlStyle/ScrollViewBasic.xaml" />
这种方式有多少个控件就需要在APP中累砌多少个引用,会使配置文件杂乱冗余,而且由于默认样式没有Key,控制不够灵活,所以再介绍下第二种方法。
2.
为控件写的样式和上文差不多,只是加上Key。(没有Key为全局样式,有Key则需要进行键值引用)
<Style x:Key="DefaultCheckBox" TargetType="{x:Type CheckBox}" />
新建一个资源,统一管理所有的控件样式资源。通过BaseOn继承带Key的样式,转换为默认全局样式,然后只需要在App中引用这一个资源文件即可。这样即使需要写几十上百个样式,APP中也只需要一行代码。
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/Resources/ButtonStyle/BasicButton.xaml" />
<ResourceDictionary Source="pack://application:,,,/Resources/ButtonStyle/BasicCheckbox.xaml" />
<ResourceDictionary Source="pack://application:,,,/Resources/ControlStyle/ScrollViewBasic.xaml" />
<ResourceDictionary Source="pack://application:,,,/Resources/TextBoxStyleBasic/TextBoxStyleBasic.xaml" />
</ResourceDictionary.MergedDictionaries>
<Style BasedOn="{StaticResource DefaultButton}" TargetType="Button" />
<Style BasedOn="{StaticResource DefaultCheckBox}" TargetType="CheckBox" />
<Style BasedOn="{StaticResource DefaultScrollViewer}" TargetType="ScrollViewer" />
<Style BasedOn="{StaticResource DefaultTextBox}" TargetType="TextBox" />
</ResourceDictionary>
App中:
<ResourceDictionary Source="pack://application:,,,/Resources/OverwrideDefaultControlStyles.xaml" />
总结:如果只需要设置一俩个控件的全局样式,第一个即可,设置多个控件样式的话,还是建议第二种。另外:在APP.xaml中,相同控件的样式,在最下面的引用优先级更高。
WPF——如何为项目设置全局样式。的更多相关文章
- 02 uni-app框架学习:设置全局样式统一每个页面的背景颜色
1.设置全局样式可以在App.vue里面 2.在每个页面的根view 里添加一个class名叫page
- SpringBoot项目 设置全局跨域
package com.nf147.policy_project; import org.springframework.stereotype.Component; import javax.serv ...
- vue设置全局样式变量 less
1.第一步: npm install sass-resources-loader --save-dev 2.然后在build 的utils.js中exports.cssLoaders = functi ...
- WPF设置全局控件样式
原文:WPF设置全局控件样式 方法: 在资源文件APP.XAML中添加如下资源 <Application x:Class="_360UI.App" xmlns="h ...
- 全局css , 样式设置, css 初始化. css ,style ,全局样式, 初始化样式
全局CSS设置总结 1.清除所有标记的内外边距 html, body, ul, li, ol, dl, dd, dt, p, h1, h2, h3, h4, h5, h6, form, fieldse ...
- Vue设置全局的方法和样式
vue中我么会经常用到通用的一些全局的方法,如何左才能实现全局的复用减少代码累赘呢? 我们一般将公用的方法分装再utils.js文件中,然后再main.js主入口文件中将utils.js中的公共的方法 ...
- bootstrap 全局样式设置
HTML <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" co ...
- 中小研发团队架构实践之生产环境诊断工具WinDbg 三分钟学会.NET微服务之Polly 使用.Net Core+IView+Vue集成上传图片功能 Fiddler原理~知多少? ABP框架(asp.net core 2.X+Vue)模板项目学习之路(一) C#程序中设置全局代理(Global Proxy) WCF 4.0 使用说明 如何在IIS上发布,并能正常访问
中小研发团队架构实践之生产环境诊断工具WinDbg 生产环境偶尔会出现一些异常问题,WinDbg或GDB是解决此类问题的利器.调试工具WinDbg如同医生的听诊器,是系统生病时做问题诊断的逆向分析工具 ...
- WPF设置全局字体和字体嵌入
原文:WPF设置全局字体和字体嵌入 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/CLeopard/article/details/40590373 ...
随机推荐
- swoole怎么保持不掉线
正常情况下客户端中断TCP连接时,会发送一个FIN包,进行4次断开握手来通知服务器.但一些异常情况下,如客户端突然断电断网或者网络异常,服务器可能无法得知客户端已断开连接. 尤其是移动网络,TCP连接 ...
- jQuery-跨域问题的处理
调用登录接口时,后端一般会在调用登录接口成功后,在response中设置cookie,之后前端的每次请求都会自动地在请求头上加上后端设置好的cookie,这对前端来说是透明的. 当登录接口与登录后调用 ...
- ubuntu 默认python版本切换
电脑上面有些脚本是python2的,有些是python3的,但是系统默认是python2,需要设置环境变量来进行切换. python2切换到python3: echo alias python=pyt ...
- MySQL数据以全量和增量方式,同步到ES搜索引擎
本文源码:GitHub·点这里 || GitEE·点这里 一.配置详解 场景描述:MySQL数据表以全量和增量的方式向ElasticSearch搜索引擎同步. 1.下载内容 elasticsearch ...
- Business Model Design 业务模型设计
Note This section is split into two parts, which describe the use of two different Object-relational ...
- 【Visio流程图】借助redis来实现数据即时刷新
[需求:]数据从竞品网站爬过来,经过分析处理之后,把结果通过网页实时反馈给业务人员. [应用:]2个应用: 一个是爬取数据的应用:不断从竞品网站爬数据,每次爬到的数据为一批.然后,对每一批爬到的数据进 ...
- Easy User Manager System writeup
0x01 解题 思路 一个进程用自己的ip去申请拿到code然后进入verify页面,另外一个进程去申请8.8.8.8 步骤 1. 首先注册一个账号 然后用两个不同的浏览器进入Change页面.这里我 ...
- 基于 Storyboard 多种方式的页面跳转、参数传递
原文 通过按钮关联跳转 选中 Button ,然后点击 action 右边拖拽到 第二个页面 选择 "Show"即可完成跳转关联. 定义页面间 segue Id,通过代码触发跳转 ...
- TypeScript 学习笔记(四)
函数: 1.函数是一组一起执行一个任务的语句 2.我们可以把一段可复用的代码放到一起组成函数,从而提高效率 3.函数声明(通过关键字 function 来声明)告诉编译器函数的名称.返回类型和参数 4 ...
- 微信小程序出现 text 设置行高 line-height 无效的问题
前言: 我在写程序过程中遇到过给text加line-height不生效的问题,但是也有生效的情况,如果不生效了就按下面的解决方法处理吧. 解决办法: 在text的外层嵌套一层view,然后给view设 ...