WPF设置样式的几种方式
第一种方式是直接使用Setter来进行,可以对Background等进行设置。
<Window.Resources>
<Style TargetType="Button">
<Setter Property="Background" Value="Red"/>
</Style></Window.Resources>
第二种是直接将比较复杂一点的Style放置到Window.Resources中:

<Window.Resources>
<LinearGradientBrush x:Key="CheckedState" StartPoint="0,0" EndPoint="0,1">
<GradientStop Color="#FFE7E1E1" Offset="0"/>
<GradientStop Color="black" Offset="1"/>
<GradientStop Color="gray" Offset="0.581"/>
</LinearGradientBrush>
</Window.Resources>

使用的时候,直接利用 Background="{StaticResource CheckedState}"即可。
第三种是利用Template方式来进行,这种可以进行比较复杂的样式制作:

<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="WpfApplication4.MainWindow"
x:Name="Window"
Title="MainWindow"
Width="640" Height="480">
<Window.Resources>
<LinearGradientBrush x:Key="CheckedState" StartPoint="0,0" EndPoint="0,1">
<GradientStop Color="#FFE7E1E1" Offset="0"/>
<GradientStop Color="black" Offset="1"/>
<GradientStop Color="gray" Offset="0.581"/>
</LinearGradientBrush> <LinearGradientBrush x:Key="UnCheckedState" StartPoint="0,0" EndPoint="0,1">
<GradientStop Color="#FFE7E1E1" Offset="0"/>
<GradientStop Color="gray" Offset="1"/>
<GradientStop Color="gray" Offset="0.581"/>
</LinearGradientBrush> <Style TargetType="TabItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="TabItem">
<Grid>
<Border Name="Border" BorderThickness="1" BorderBrush="Gray" Background="{StaticResource UnCheckedState}" Width="80" Height="25" Margin="0,0,1,0" CornerRadius="4,4,0,0">
<Grid>
<ContentPresenter x:Name="ContentSite"
VerticalAlignment="Center"
HorizontalAlignment="Center"
ContentSource="Header"
Margin="12,2,12,2"
RecognizesAccessKey="True" />
</Grid>
</Border>
</Grid> <ControlTemplate.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Panel.ZIndex" Value="100" />
<Setter TargetName="Border" Property="Background" Value="{StaticResource CheckedState}" />
<Setter TargetName="Border" Property="BorderThickness" Value="1,1,1,0" />
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter TargetName="Border" Property="Background" Value="{StaticResource DisabledBackgroundBrush}" />
<Setter TargetName="Border" Property="BorderBrush" Value="{StaticResource DisabledBorderBrush}" />
<Setter Property="Foreground" Value="{StaticResource DisabledForegroundBrush}" />
</Trigger>
</ControlTemplate.Triggers> </ControlTemplate> </Setter.Value>
</Setter>
</Style> </Window.Resources> <Grid x:Name="LayoutRoot">
<TabControl Margin="0,0,0,116">
<TabControl.Resources>
<Style TargetType="TabPanel">
<Setter Property="HorizontalAlignment" Value="Center" />
</Style>
</TabControl.Resources>
<TabItem Header="TabItem" >TabItem</TabItem>
<TabItem Header="My Item">My Item</TabItem>
<TabItem Header="My Database">My Database</TabItem>
<TabItem Header="TabItem"></TabItem>
<TabItem Header="TabItem"></TabItem>
<TabItem Header="TabItem"></TabItem>
</TabControl>
</Grid>
</Window>

当然,制作出来的效果也就是好看一些,显示效果如下:

WPF设置样式的几种方式的更多相关文章
- TextView设置样式的3种方式
1,直接在<TextView>中设置 <TextView android:id="@+id/tv_badge_view_count" android:layout ...
- 原生js更改css样式的两种方式
下面我给大家介绍的是原生js更改CSS样式的两种方式: 1通过在javascript代码中的node.style.cssText="css表达式1:css表达式2:css表达式3 &quo ...
- 【javascript】原生js更改css样式的两种方式
下面我给大家介绍的是原生js更改CSS样式的两种方式: 1通过在javascript代码中的node.style.cssText="css表达式1:css表达式2:css表达式3 &quo ...
- javascript总结40:DOM中操作样式的两种方式
1 DOM中操作样式的两种方式 1 通过元素的style属性 注意: 通过style属性设置样式时,css中要写单位的属性,在js代码中也要加单位 //html <div id="bo ...
- 我给女朋友讲编程CSS系列(1) –添加CSS样式的3种方式及样式表的优先权
如果说,原生态就是美,那么,我们就没有必要穿衣打扮. 网页是什么? 说白了,网页就是一堆[html标签]有序的搭配,让[CSS属性值]整整容,请[Javascript语言]处理一下事件. 一个人的整容 ...
- 【iOS开发-72】设置状态栏的两种方式、程序生命周期以及更好地理解几大类(对象)之间的关系
(1)设置状态栏的2种方式 --第一种方式就是我们在控制器中设置,系统默认就是交给视图控制器去管理的,这样不同视图控制器能够自己定义不同的状态栏例如以下: -(BOOL)prefersStatusBa ...
- HTML 引用Css样式的四种方式
不才,只知道HTML引用CSS样式有四种方式,内部引用和外部引用各两种,因为老是忘记细节,记下了随时翻阅亦可方便如我般的初学者 内部引用方式1: 直接在标签内用 style 引用,如: <div ...
- python 中增加css样式的三种方式
增加css样式的三种方式: <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...
- flask框架----设置配置文件的几种方式
设置配置文件的几种方式 ==========方式一:============ app.config['SESSION_COOKIE_NAME'] = 'session_lvning' #这种方式要把所 ...
随机推荐
- 【C】——利用sigsuspend函数等待信号阻塞进程
#include<signal.h> int sigsuspend(const sigset_t *sigmask); 返回值:-,并将errno设置为EINTR 将进程的信号屏蔽字设置为 ...
- jquery 中 $ 符的意义
$()就是一个函数名,别把它想得这么神奇.$就是一个字符,比如function a(){};function $(){};是一样的.只是jquery中习惯用$函数来作为对象化的入口而已.你也可以把jq ...
- Mongo的备份和恢复(mongodump 和mongorestore )
http://www.runoob.com/mongodb/mongodb-mongodump-mongorestore.html --备份单个表mongodump -u superuser -p 1 ...
- 关于 C# 十进制不足补位的应用
看下面图的应用(我们平常的一些自定义主键增加): 补位应用知识: D十进制 不足几位前面补0 基于这个我们可以得到上面结果 //最大編號 string maxNo = string.Empty; // ...
- R中ifelse、which、%in%的用法
R中ifelse.which.%in%的用法 (2014-02-08 13:54:08)标签: 教育 在R学习过程中,遇到了ifelse.which.%in%,下面分别举例,说明他们的用法.1.ife ...
- 关于Unity中定时器的简易使用
定时器 一段指定的时间后执行某个函数或者某个语句 用法 //定时器写法1 flaot total_time; void Update(){ this.total_time += (Time.delta ...
- Relu的理解
ReLU上的花样 CNN出现以来,感觉在各个地方,即便是非常小的地方都有点可以挖掘.比如ReLU. ReLU的有效性体现在两个方面: 克服梯度消失的问题 加快训练速度 而这两个方面是相辅相成的,因为克 ...
- Linux系统中如何校验SHA1和MD5?
来自:系统之家:http://www.xitongzhijia.net/xtjc/20160316/69125.html 我们在网络上下载或在U盘中复制的文件正常来说和源文件是一样的,但有时在下载或拷 ...
- IE10弹窗showModalDialog关闭之后提示SCRIPT5011:不能执行已释放的Script代码
在Web开发中,经常使用showModalDialog弹窗 今天遇到一个小问题,IE10中弹窗关闭之后提示SCRIPT5011:不能执行已释放的Script代码 网上搜罗了一些资料,发现大多都提到对象 ...
- Java注解Annotation学习笔记
一.自定义注解 1. 使用关键字 @interface 2. 默认情况下,注解可以修饰 类.方法.接口等. 3. 如下为一个基本的注解例子: //注解中的成员变量非常像定义接口 public @int ...