WPF——如何为项目设置全局样式。
时间:2019-11-14
本文章向大家介绍WPF——如何为项目设置全局样式。,主要包括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:,,,/EkingHis.App.Products.Emr;component/Resources/ButtonStyle/BasicButton.xaml" /> <!-- 默认TextBox样式 --> <ResourceDictionary Source="pack://application:,,,/EkingHis.App.Products.Emr;component/Resources/TextBoxStyleBasic/TextBoxStyleBasic.xaml" /> <!-- 默认CheckBox样式 --> <ResourceDictionary Source="pack://application:,,,/EkingHis.App.Products.Emr;component/Resources/ButtonStyle/BasicCheckbox.xaml" /> <!-- 默认滚动条样式 --> <ResourceDictionary Source="pack://application:,,,/EkingHis.App.Products.Emr;component/Resources/ControlStyle/ScrollViewBasic.xaml" />
这种方式有多少个控件就需要在APP中累砌多少个引用,会使配置文件杂乱冗余,而且由于默认样式没有Key,控制不够灵活,所以再介绍下第二种方法。
2.
为控件写的样式和上文差不多,只是加上Key。
<Style x:Key="DefaultCheckBox" TargetType="{x:Type CheckBox}" />
新建一个资源,统一管理所有的控件样式资源。通过BaseOn继承带Key的样式,转换为默认全局样式,然后只需要在App中引用即可。这样即使需要写几十上百个样式,APP中也只需要一行代码。
<ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="pack://application:,,,/EkingHis.App.Products.Emr;component/Resources/ButtonStyle/BasicButton.xaml" /> <ResourceDictionary Source="pack://application:,,,/EkingHis.App.Products.Emr;component/Resources/ButtonStyle/BasicCheckbox.xaml" /> <ResourceDictionary Source="pack://application:,,,/EkingHis.App.Products.Emr;component/Resources/ControlStyle/ScrollViewBasic.xaml" /> <ResourceDictionary Source="pack://application:,,,/EkingHis.App.Products.Emr;component/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:,,,/EkingHis.App.Products.Emr;component/Resources/OverwrideDefaultControlStyles.xaml" />
总结:如果只需要设置一俩个控件的全局样式,第一个即可,设置多个控件样式的话,还是建议第二种。另外:在APP.xaml中,在最下面的引用优先级最高。
原文地址:https://www.cnblogs.com/king10086/p/11855118.html
- Ubuntu 17.04 x64 安装 Docker CE
- 这是一篇清晰易懂的 Rxjava 入门教程
- 可能是最详细的部署:Docker Registry企业级私有镜像仓库Harbor管理WEB UI
- 简单好用的阴影库 ShadowLayout
- 【项目管理和构建】——Maven下载、安装和配置(二)
- 打印机安全研究(一):不容乐观的网络打印机安全状况
- Apache Maven 入门篇
- hyperledger v1.0.5 区块链运维入门(一)
- 分析无线遥控器信号并制作Hack硬件进行攻击
- 第二章:Shiro入门——深入浅出学Shiro细粒度权限开发框架
- 在Apache Spark上跑Logistic Regression算法
- 第四章:Shiro的身份认证(Authentication)——深入浅出学Shiro细粒度权限开发框架
- 第五章:Shiro的授权(Authorization)——深入浅出学Shiro细粒度权限开发框架
- 第六章:Shiro的Realms——深入浅出学Shiro细粒度权限开发框架
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 亿及流量多级缓存 - 一致性哈希负载均衡与模板渲染
- 关于友情链接或者其他外部链接的建议
- 总结Js方法工具类库,总有你需要的方法
- [docker]安装Mysql
- [Centos7]linux运行django项目报错no module named _ssl
- [Centos7]在非标准端口上运行SSH
- [Centos7]安装及配置bind(DNS服务)
- [Centos7.2]关于crontab报错
- [Centos7.2]关于升级python后防火墙无法启动
- [Centos7]关于限制IP通过ssh登陆
- Apache安装SSL证证书
- 打卡群刷题总结0717——不同路径 II
- [Centos7.2]Django挂载后台运行
- [Centos7+python3]IPy模块安装
- KVM实现分布式部署lamp并安装WordPress