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章:样式继承
节省你的时间--样式继承 ### 什么是继承? 后代元素可以继承先代元素的一些属性.有了它,可以省去分别定义样式的时间.继承了方向是由外而内的. ### 继承的局限性 应该注意到,有些属性是不适宜继承 ...
随机推荐
- javascript中apply和call的区别
请补充 136页 pdf 高级javascript设计
- PAT 1065. 单身狗(25)
“单身狗”是中文对于单身人士的一种爱称.本题请你从上万人的大型派对中找出落单的客人,以便给予特殊关爱. 输入格式: 输入第一行给出一个正整数N(<=50000),是已知夫妻/伴侣的对数:随后N行 ...
- mac上傻瓜式java安装环境配置
适用于mac新手用户或者黑苹果用户 首先,打开终端 输入 java -version 检查是否已安装好Java运行环境 显示我现在电脑没有安装 如果返回版本号,说明运行环境成功 对于windows用过 ...
- 图形数据库(GraphDB)
Date: 2016-01-27 Title: 图形数据库-1 Published: true Type: post Excerpt: Category: GraphDB 图形数据库(GraphDB) ...
- HDU - 1114 Piggy-Bank 【完全背包】
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1114 题意 给出一个储钱罐 不知道里面有多少钱 但是可以通过重量来判断 先给出空储钱罐的重量 再给出装 ...
- Python 自定义模块的打包和发布
写了一个Python模块,要求打包发布,供同事们使用,好吧,查了一下,网上大部分教程没有一个能把话说明白,不过最后还是解决了,特此记录一下, 以免下次遇到同样问题,也帮助其他有缘人,哈哈. 首先看一下 ...
- iOS __weak 和 __block 的使用探讨
在基本的开发中遇到 需要弱引用时候 我一般 用 weak 预防 死锁的时候 我会用 block 的确没出过大错 但是这样处理 的确有点囫囵 现在我想好好理解一下这两个修饰符 "bloc ...
- 声明:关于该博客部分Java等方向知识参考来源的说明
[声明] 该博客部分代码是通过学习黑马程序员(传智播客)视频后,参考毕向东.张孝祥.杨中科等老师的公开课视频中讲解的代码,再结合自己的理解,自己手敲上去的,一方面加深自己的理解和方便以后自己用到的时候 ...
- uCGUI 按键窗口切换机制
前段时间在做一个窗口项目,这个项目菜单项过多,在管理起来比较麻烦.想做一个高效移植又方便的一个切换机制.后来在网上多方查找这方面资料,但是感觉比较少.后来自己整理出了这个结构,希望对后来朋友有所帮助. ...
- 【Linux不需要磁盘碎片整理的真正原因是因为Linux只是一个内核,它没有磁盘可以整理】
[Linux不需要磁盘碎片整理的真正原因是因为Linux只是一个内核,它没有磁盘可以整理]