wpf 样式继承
当定义的wpf多个样式,其样式内容(属性、触发器等)有较多的重复时,可以考虑将其抽象成父样式,来提升样式代码的可维护性以及减少代码冗余。
wpf 进行样式继承时,需要使用style的BasedOn属性。msdn的介绍参见:https://msdn.microsoft.com/en- us/library/system.windows.style.basedon(v=vs.110).aspx
下面介绍一个样式继承的简单场景,并附以代码示例。
- 场景简介。假设系统中要求按钮的字体需全部为黑体,14号,文字色为蓝色。后来项目经理要求在按钮样式的基础上,增加右靠齐的按钮。
很明显,系统中要存在两种样式的按钮,出去文字靠齐方式之外,其他样式全部相同,用按钮样式的继承来解决这个问题就非常合适了。
- 1 思路:可以设计3中按钮的样式
- ButtonBaseStyle。按钮样式的基类
- DefaultButtonStyle。默认的按钮样式。【注】若要运用全局样式,则style不能设置x:Keyshuxing。
- ContentPadLefButtonStyle。内容右靠齐的按钮样式。
- 2 代码
- 在项目中添加资源字典文件,命名为ButtonAssets.xaml
- 在资源字典中新建ButtonBaseStyle样式
<Style x:Key="ButtonBaseStyle" TargetType="Button">
<Setter Property="FontWeight" Value="Bold"></Setter>
<Setter Property="FontSize" Value="14"></Setter>
<Setter Property="Foreground" Value="Blue"></Setter>
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
</Style>
- 使用样式继承,新建默认样式
<Style TargetType="Button" BasedOn="{StaticResource ButtonBaseStyle}"></Style>
- 使用样式继承,新建右靠齐样式
<Style x:Key="ContentPadLefButtonStyle" TargetType="Button" BasedOn="{StaticResource ButtonBaseStyle}">
<Setter Property="HorizontalContentAlignment" Value="Right"/>
</Style> - 在工程的App.xaml中引用资源字典
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/TextBlockBasedOnStyle;component/ButtonAssets.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources> - 创建不同的按钮,引用样式。默认样式按钮,无需引用默认样式,程序在运行时,会附加DefaultButtonStyle
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="5*"/>
<ColumnDefinition Width="5*"/>
</Grid.ColumnDefinitions>
<Button Width="100" Content="默认样式" Height="40"></Button><Button Style="{StaticResource ContentPadLefButtonStyle}" Content="右靠齐样式" Width="100" Height="40" Grid.Column="1"></Button>
</Grid> - 程序执行结果
- 程序代码:http://files.cnblogs.com/files/TaiYangXiManYouZhe/TextBlockBasedOnStyle.rar
wpf 样式继承的更多相关文章
- WPF样式继承
场景:样式A和样式B的背景颜色一样,但是文字颜色不一样 <Style x:key="BaseStyle" TargetType="Button"> ...
- WPF 精修篇 样式继承
原文:WPF 精修篇 样式继承 这个 是新知识 样式可以继承 <Style x:Key="TextBlockStyleBase" TargetType="{x:Ty ...
- WPF 样式和行为
样式(style):组织和重用格式化选项的重要工具,将细节如边距.字体.字号等信息封装起来,然后再需要的地方通过属性来应用样式. 行为(behavior):封装一些通用的UI行为,如拖动,缩放元素的代 ...
- [WPF疑难] 继承自定义窗口
原文 [WPF疑难] 继承自定义窗口 [WPF疑难] 继承自定义窗口 周银辉 项目中有不少的弹出窗口,按照美工的设计其外边框(包括最大化,最小化,关闭等按钮)自然不同于Window自身的,但每个弹出框 ...
- windows phone (13) 样式继承
原文:windows phone (13) 样式继承 在上一遍文章中已经介绍到可以在Resources集合中定义样式,我们也可以在一个样式上引用其他的样式,这就是继承的概念,使用方法是将引用的样式放置 ...
- WPF样式(Style)入门
原文:WPF样式(Style)入门 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/qq_34802416/article/details/78231 ...
- Bootstrap WPF Style,Bootstrap风格的WPF样式
简介 GitHub地址:https://github.com/ptddqr/bootstrap-wpf-style 此样式基于bootstrap-3.3.0,样式文件里的源码行数都是指的这个版本.CS ...
- css004 用样式继承节省时间
css004 用样式继承节省时间 继承:inherit 继承可以简化样式表 继承是有局限的,有些样式没法继承,如:border,width,height
- 《CSS3实战》读书笔记 第4章:样式继承
节省你的时间--样式继承 ### 什么是继承? 后代元素可以继承先代元素的一些属性.有了它,可以省去分别定义样式的时间.继承了方向是由外而内的. ### 继承的局限性 应该注意到,有些属性是不适宜继承 ...
随机推荐
- Symfony3 查询搜索功能DQL语句like查询
//前台页面代码 <form method="GET" action="{{ path('staff_index') }}" name="sea ...
- 3.30课·········Marquee标签
页面的自动滚动效果,可由javascript来实现, 但是有一个html标签 - <marquee></marquee>可以实现多种滚动效果,无需js控制. 使用marquee ...
- POJ - 3414 Pots 【BFS】
题目链接 http://poj.org/problem?id=3414 题意 给出两个杯子 容量分别为 A B 然后给出C 是目标容量 有三种操作 1 将一个杯子装满 2.将一个杯子全都倒掉 3.将一 ...
- VHDL基础 学习笔记
最近一直忙着学校里的活动,所以没怎么更新,上周活动忙完了,正好也借着数电实验的机会,重新学习一下VHDL的编程.以下是转自360doc的教程: ———————————————————————————— ...
- 数据库连接理解——JDBC
需求:数据库操作 数据是:用户信息 1.连接数据库 JDBC Hibernate 2.操作数据库 c create r read u update d delete 3.关闭数据库连接 interf ...
- js原生函数一些封装
这是一些js原生封装的函数,主要是为了兼容IE浏览器,如下 获取css样式 function getStyle(ele, prop) { if(window.getComputedStyle) { r ...
- delphi通过Idhttp和php交互
最近需要做delphi和php交互的方法: 就把这2个方法写了下 一,Get方法 const Url = 'http://www.cnblogs.com'; procedure TForm1.Butt ...
- 算法(Algorithms)第4版 练习 1.5.24
package com.qiusongde; import edu.princeton.cs.algs4.StdOut; public class Exercise1524 { public stat ...
- Java强引用、 软引用、 弱引用、虚引用
Java强引用. 软引用. 弱引用.虚引用 2012-07-09 1.对象的强.软.弱和虚引用 在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象.也 ...
- jsp操作xml
<?xml version="1.0" encoding="UTF-8"?> <!-- 说明是xml文件,文件的版本和字符编码 --> ...