自定义样式与模板

news/2024/7/5 2:02:34

开发过程中,我们有时候用WPF原生的控件就能实现自己的需求,但是样式、风格并不

能满足我们的需求,那么我们该怎么办呢?

----自定义样式与模板。

一、样式

在WPF中我们可以使用Style来设置控件的某些属性值,并使该设置影响到指定范围内的

所有该类控件或影响指定的某一控件,比如说我们想将窗口中的所有按钮都保持某一种

风格,那么我们可以设置一个Style,而不必分别设置每个按钮的风格。

Style是作为一种资源被保存下来的. 看下面的例子:

<Style x:Key="style1" TargetType="{x:Type Button}">

<Setter Property="Background" Value="Skyblue" />

  <Setter Property="FontSize" Value="18" />

  <Setter Property="FontFamily" Value="Verdena" />

  <Setter Property="FontWeight" Value="Bold" />

</Style>

如果我们希望是动态样式,可以添加Trigger

<Style.Triggers>

 <Trigger Property="IsPressed" Value="True">

  <Setter Property="Foreground" Value="Red"/>

 </Trigger>

</Style.Triggers>

二、模板

在WPF中有三大模板ControlTemplate,ItemsPanelTemplate,DataTemplate。其中

ControlTemplate和ItemsPanelTemplate是控件模板,DataTemplate是数据模板,他们都

派生自FrameworkTemplate抽象类。

定义模板的方法有三种:

这里以ControlTemplate为例:

1.内联定义: 

 <Button Content="Button1">

 <Button.Template>

 <ControlTemplate TargetType="Button">

  <!--在这里定义ControlTemplate.-->

 </ControlTemplate>

 </Button.Template>

 </Button>

2.定义为资源:

 <StackPanel>

 <StackPanel.Resources>

 <ControlTemplate TargetType="Button" x:Key="newTemplate">

  <!--在这里定义ControlTemplate.-->

 </ControlTemplate>

 </StackPanel.Resources>

 <Button Template="{StaticResource newTemplate}" Content="Button1"/>

 </StackPanel>

3.通过Style定义:

 <StackPanel>

 <StackPanel.Resources>

 <Style TargetType="Button" x:Key="newTemplate">

 <Setter Property="Template">

 <Setter.Value>

 <ControlTemplate TargetType="Button">

  <!--在这里定义ControlTemplate.-->

 </ControlTemplate>

 </Setter.Value>

 </Setter>

 </Style>

 </StackPanel.Resources>

 <Button Style="{StaticResource newTemplate}" Content="Button1"/>

 </StackPanel>


http://lihuaxi.xjx100.cn/news/207759.html

相关文章

(三) 共享模型之管程【共享带来的问题】

一、共享带来的问题 1. 临界区 &#xff08;1&#xff09;一个程序运行多个线程本身是没有问题的 &#xff08;2&#xff09;问题出在多个线程访问共享资源 1️⃣多个线程读共享资源其实也没有问题 2️⃣在多个线程对共享资源读写操作时发送指令交错&#xff0c;就会出现问题 …

基于vue3/Vue3的组件库

一、项目简介 基于vue3/Vue3的组件库&#xff0c;Vue赏饭吃 二、实现功能 Basic Grid 栅格 Layout 布局 Color 色彩 Font 字体 Button 按钮 Icon 图标 Form Input 输入框 Radio 单选框 Checkbox 多选框 Switch 开关 Table 表格 Select 选择器 AutoComplete 自动…

未来十年的Python前景会是什么样的?

看了一些文章的答案&#xff0c;我觉得的没有一答案是真正的站在10年后角度来讨论这个问题的&#xff0c;讨论的其实都是现在python的现状或问题&#xff0c;我觉得讨论这种问题时&#xff0c;我们一方面要理性分析&#xff0c;另一方面一定要敢于打开脑洞&#xff0c;作为一对…

刷爆力扣之矩阵中的幻方

刷爆力扣之矩阵中的幻方 HELLO&#xff0c;各位看官大大好&#xff0c;我是阿呆 &#x1f648;&#x1f648;&#x1f648; 今天阿呆继续记录下力扣刷题过程&#xff0c;收录在专栏算法中 &#x1f61c;&#x1f61c;&#x1f61c; 该专栏按照不同类别标签进行刷题&#xff0c…

构造函数原型prototype

一、原型prototype 构造函数通过原型分配的函数是所有对象所共享的。 JavaScript规定&#xff0c;每一个构造函数都有一个prototype属性&#xff0c;指向另一个对象&#xff0c;注意这个prototype就是个对象&#xff0c;这个对象的所有属性和方法&#xff0c;都会被构造函数所…

2022-Q3

2022-Q3 2022 年 11 月 30 日 20:02:55 时间过得很快&#xff0c;到新公司已经 7 个月了。 上次写总结还是在 8 月份。 生活 回首向来萧瑟处&#xff0c;归去&#xff0c;也无风雨也无晴。 浑浑噩噩的, 缺少了对生活&#xff0c;工作的追求。 有段时间&#xff0c;陷入了网络…

设计模式:02观察者模式--labview实现

引言 在观察者模式中&#xff0c;一种叫做被观察者的对象维护了观察者对象的集合&#xff0c;当被观察者对象发生改变时候&#xff0c;它会通知观察者。 在被观察者对象所维护的观察者集合中&#xff0c;能够添加或者删除观察者。被观察者状态变化能够传递给观察者。这样观察者…

Postman接口Mock Server服务器设置

目录 一、适用场景 二、设置步骤 2.1.创建一个mock server 2.2.配置mock server 2.3.Mock Servers创建成功一个新的mock地址 2.4.环境变量Environments&#xff1a;生成一个mock server新的环境变量 2.5.项目集Collections&#xff1a;生成一个mock server新的项目集&am…