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 ...
 
随机推荐
- Python函数(函数定义、函数调用)用法详解
			
Python 中,函数的应用非常广泛,前面章节中我们已经接触过多个函数,比如 input() .print().range().len() 函数等等,这些都是 Python 的内置函数,可以直接使用. ...
 - 利用Python进行数据分析-Pandas(第七部分-时间序列)
			
时间序列(time series)数据是一种重要的结构化数据形式,应用于多个领域,包括金融学.经济学.生态学.神经科学.物理学等.时间序列数据的意义取决于具体的应用场景,主要有以下几种: 时间戳(ti ...
 - Ubuntu Server中安装keepalived
			
场景 Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后Kee ...
 - 利用jquery实现前端同步请求---判断姓名是否为空并设置事件
			
<%@ page contentType="text/html;charset=UTF-8" language="java" %><html& ...
 - js基础——错误处理
			
一:错误捕获 1.try-catch 语句(错误捕获) try{ //这里放置可能出现问题的代码 }catch(error){ //错误发生时执行的代码 console.log(error.name) ...
 - Flutter学习笔记(6)--Dart流程控制语句
			
如需转载,请注明出处:Flutter学习笔记(5)--Dart流程控制语句 条件语句:if.if...elseif.if...elseif...else ; ) { print('优秀'); } &g ...
 - 高级语言——java
			
高级语言——java 起源与发展 1991 年,James Gosling 博士发布产品 Oak,这是 Java 语言的前身. 1995 年,Oak 语言改名为 Java. 1996 年,JDK(Ja ...
 - 用函数模拟简单的购物车(Python)
			
""" 购物车功能: a.引导用户输入金额 b.给用户展示所有的商品 c.引导用户输入需要进行的操作[添加 删除 结算购物车 退出] d.引导用户选择商品 e.引导用户输 ...
 - 自己写的一个连数据库的音乐调用模块 MusicRj
			
#自己定义 class MusicRj: # 创音乐表t_music # sql = '''CREATE TABLE t_music1( # id INT PRIMARY KEY AUTO_INCRE ...
 - 队列Queue的实现
			
数组实现 package DataStructures.Queues; /** * This implements Queues by using the class Queue. * <p&g ...