WPF初学——自定义样式

在WPF开发界面的过程中,经常会遇到多个相同种类的控件样式也是统一的,但是要一个一个地去设置,即使是复制粘贴都嫌累,所以翻了些书,网上度娘了一些材料,发现WPF有很容易的方式解决我的纠结,那就是——自定义样式。

我使用的比较多的是在Grid里使用Grid.Resource标签将样式作为静态资源统一管理起来,然后在需要的地方使用。

 1 <Grid.Resources>
 2             <Style x:Key="Style_Label" TargetType="Label">
 3                 <Setter Property="HorizontalAlignment" Value="Left"/>
 4                 <Setter Property="VerticalContentAlignment" Value="Center"/>
 5             </Style>
 6 
 7             <Style x:Key="Style_Label_Bold" TargetType="Label">
 8                 <Setter Property="HorizontalAlignment" Value="Left"/>
 9                 <Setter Property="VerticalContentAlignment" Value="Center"/>
10                 <Setter Property="FontWeight" Value="Bold"/>
11             </Style>
12 
13             <Style x:Key="Style_Button" TargetType="Button">
14                 <Setter Property="Height" Value="40"/>
15                 <Setter Property="Width" Value="80"/>
16                 <Setter Property="HorizontalAlignment" Value="Left"/>
17                 <Setter Property="Background" Value="#FF00AAFF"/>
18                 <Setter Property="Foreground" Value="White"/>
19                 <Setter Property="BorderBrush" Value="{x:Null}"/>
20                 <Setter Property="Focusable" Value="False"/>
21             </Style>
22 
23             <Style x:Key="Style_TextBox" TargetType="TextBox">
24                 <Setter Property="Height" Value="30"/>
25                 <Setter Property="HorizontalAlignment" Value="Left"/>
26                 <Setter Property="VerticalContentAlignment" Value="Center"/>
27             </Style>
28 
29             <VisualBrush x:Key="HelpBrush" TileMode="None" Opacity="0.3" Stretch="None" AlignmentX="Left">
30                 <VisualBrush.Visual>
31                     <TextBlock FontStyle="Italic" Text="必填项,免单或修改价格原因"/>
32                 </VisualBrush.Visual>
33             </VisualBrush>
34             
35             <Style x:Key="Style_TextBox_Tooltip" TargetType="TextBox">
36                 <Setter Property="Height" Value="30"/>
37                 <Setter Property="HorizontalAlignment" Value="Left"/>
38                 <Setter Property="VerticalContentAlignment" Value="Center"/>
39                 <Style.Triggers>
40                     <Trigger Property="Text" Value="{x:Null}">
41                         <Setter Property="Background" Value="{StaticResource HelpBrush}"/>
42                     </Trigger>
43                     <Trigger Property="Text" Value="">
44                         <Setter Property="Background" Value="{StaticResource HelpBrush}"/>
45                     </Trigger>
46                 </Style.Triggers>
47             </Style>
48         </Grid.Resources>

现在遇到的问题是,我的Button的样式,并不能真的去掉外边框,需要更深一步才行。

当然还有TextBox的空内容提示,还在研究,不了解visualBrush的用法,算是移山填海地手法从巨人们的肩膀上得来的,多实践才会理解代码的含义。

说实话,Trigger(触发器)要比事件更方便一些,发现了比winform好用的地方了,果然WPF是革新的技术啊!

转载于:https://www.cnblogs.com/LeonWong/p/4867761.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/290232.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Xamarin效果第二篇之公众号App

前面简单摸索一下Xamarin然后简单做了一个时间轴;这不这几天再次基于Xamarin实现了一下公众号App;我也就是瞎折腾,闲话不多扯,上效果:主Page直接用TabbedPage(类似WPF中的TabControl)然后后台添加内容Page:”互动“页使用CollectionView和模板选择器&#xff1a;"发表&quo…

C和指针之联合体大小

1、联合体的特点和大小 union是共用一个内存首地址,联合体中每个成员的地址都相同,等于联合体变量的首地址 联合体的大小足够容纳最宽的成员,大小能被其包含的所有基本数据类型的大小所整除 2、测试Demo #include <stdio.h>union var {long int a;int b; };union size…

新的斐波那契数列

转载请标明出处&#xff1a;牟尼的专栏 http://blog.csdn.net/u012027907 Problem1&#xff1a; 题目描写叙述&#xff1a; 定义一个新的斐波那契数列&#xff1a; F(0)7。 F(1)11; F(n)F(n-1)F(n-2);(n>2) 输入&#xff1a; 输入有多组&#xff1b;首先输入一个N&…

怎样做外贸生意 ?

怎样做外贸生意 &#xff1f;最近很多朋友都找我咨询&#xff0c;问是都是怎样做外贸生意&#xff0c;虽说本人已转行做教育&#xff0c;但是今天还是很想来跟大家分享下做外贸做了十几年的经验。很多人会觉得外贸离自己很遥远很高大上&#xff0c;以为只有非常有实力的企业才能…

K8S原来如此简单(一)K8S核心组件与基本原理

k8s视频课程K8S核心组件与工作原理k8s官方文档&#xff1a;https://kubernetes.io/zh/docs/home/前提掌握容器技术&#xff1a;Docker&#xff0c;Containerd等K8S优势使用简单&#xff0c;少量人/小团队可以轻松维护大型分布式系统全面拥抱微服务架构&#xff0c;快速迭代&…

php 判断update返回为0_PHP进行数据库更新update操作,返回状态

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":7,"count":7}]},"card":[{"des":"提供基于开源Elasticsearch及商业版X-Pack插…

Web Storage中的sessionStorage和localStorage

html5中的Web Storage包括了两种存储方式&#xff1a;sessionStorage和localStorage。 sessionStorage用于本地存储一个会话&#xff08;session&#xff09;中的数据&#xff0c;这些数据只有在同一个会话中的页面才能访问并且当会话结束后数据也随之销毁。因此sessionStorage…

Eclipse运行项目报Could not find *.apk!解决办法

1、问题 运行Eclipse跑Android项目的时候&#xff0c;出现下面提示 Could not find *.apk 然后Eclipse里面错误提示说 找不到AndroidManifest.xml这个文件 2、解决办法 网上很多办法&#xff0c;build项目&#xff0c;还是不行&#xff0c;我特么之前也没有遇到过呀&#…

wos 文献被引_WoS和ESI数据库高被引论文的界定.pdf

WoS和ESI数据库高被引论文的界定.pdf*基于Web of Science 和ESI 数据库高被引论文的界定方法刘雪立 收稿日期:20 12-07 -30修回日期:20 12-10-08&#xff0c; 《 》 &#xff0c;453003 &#xff0c;E-mail :liueditor 163 &#xff0e; com河南省科技期刊研究中心 新乡医学院期…

docker supervisor管理进程

Supervisor管理进程Docker容器在启动的时候开启单个进程&#xff0c;比如&#xff0c;一个ssh或者apache的daemon服务。但我们经常需要在一个机器上开启多个服务&#xff0c;这可以有很多方法&#xff0c;最简单的就是把多个启动命名放到一个启动脚本里面&#xff0c;启动的时候…

Oracle笔记 三、function 、select

Scott表下有这么几个常用的表&#xff0c;而且还带有数据。分别是emp、dept、salgrade&#xff1b; 1、查看表结构用desc desc emp; 2、空表dual&#xff0c;最常用的空表&#xff0c;如&#xff1a; select 2 * 4 from dual; select sysdate from dual; 3、双引号能保持格式 如…

C和指针之动态内存分配malloc、calloc、realloc简单使用和区别

1、介绍 3个函数都在<stdlib.h>头文件1&#xff09;、void* malloc(unsigned size);在内存的动态存储区中分配一块长度为size字节的连续区域&#xff0c;参数size为需要内存空间的长度&#xff0c;返回该区域的首地址&#xff0c;这里我们需要主要如果申请失败返回空指针…

理解Linux系统中的load average

一、什么是load average&#xff1f;linux系统中的Load对当前CPU工作量的度量 (WikiPedia: the system load is a measure of the amount of work that a computer system is doing)。也有简单的说是进程队列的长度。Load Average 就是一段时间 (1 分钟、5分钟、15分钟) 内平均…

【贯穿】.NET6结合Docker傻瓜式实现容器编排

常规开发部署的痛点一个项目的开发上线有很多纷繁复杂的问题&#xff0c;例如&#xff1a;操作系统运行环境以及各种应用配置、集群环境搭建等等。特别是各种版本的迭代导致的不兼容&#xff0c;这些对于曾经的架构师而言也十分苦恼。而Docker的出现实现了从“蚂蚁搬家”到“乾…

bootstrapt 表格自适应_一起聊B端设计 - 如何设计表格?

一、 数据查看让我们先来回顾一下表格的基本构成&#xff0c;最上面的为表头&#xff0c;横为行&#xff0c;纵为列&#xff0c;内容区每一组展示数据区域为单元格。 表格的设计&#xff0c;虽然看似简单&#xff0c;但是作为用户最常用的组件之一&#xff0c;我们需要对视觉和…

.NET 6 攻略大全(二)

点击上方蓝字关注我们&#xff08;本文阅读时间&#xff1a;15分钟)接上篇内容&#xff0c;本篇文章将介绍&#xff1a;Arm64、容器、支持 OpenTelemetry 指标、Windows Forms 的相关攻略。 Arm64这些天来&#xff0c;对于笔记本电脑、云硬件和其他设备来说&#xff0c;Arm64 令…

C和指针之动态内存分配之输入很多整数进行排序

1、问题 读取一列整数,然后按升序排列它们,最后打印列表 2、代码实现 #include <stdio.h> #include <stdlib.h> /** 此函数根据你给的比较条件进行快速排序,通过指针移动实现排序 void qsort ( void * base, size_t num, size_t size, int ( * comparator ) (…

ubuntu 开启 apache mod_rewrite

2019独角兽企业重金招聘Python工程师标准>>> ci里需要隐藏index.php的输入需要使用apache的rewrite模块,按照下面的步骤开启mod_rewrite http://www.dev-metal.com/enable-mod_rewrite-ubuntu-14-04-lts/ 转载于:https://my.oschina.net/u/1177171/blog/354202

【转】Linux中断处理学习笔记

原文网址&#xff1a;http://www.cnblogs.com/GT_Andy/archive/2011/06/21/2086100.html 1&#xff0e;Linux中断的注册与释放&#xff1a; 在<linux/interrupt.h>, , 实现中断注册接口: int request_irq(unsigned int irq, irqreturn_t (*handler)(int, void *, struct …

Jenkins入门系列之——03PDF文档下载

啥都不说了&#xff0c;网页看着蛋疼的&#xff0c;自己下载pdf文档吧。 点击下载文档 http://files.cnblogs.com/zz0412/jenkins%E5%85%A5%E9%97%A8%E6%89%8B%E5%86%8C.pdf &#xff08;一直有人说下载不了&#xff0c;把连接单独发出来&#xff09; 好记性不如烂笔头&#x…