WPF设置样式的几种方式

摘要:
SetterProperty=“背景”值=“红色”/></Window.Resources>Window.Resources>GradientStopColor=“#FFE7E1E1”偏移=“0”/>GradientStopColor=“gray”偏移=“0.581”/>/线条渐变画笔>

第一种方式是直接使用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设置样式的几种方式第1张

免责声明:文章转载自《WPF设置样式的几种方式》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇使用HslCommunication实现PLC数据的远程客户端监视,以及web端实时监视,远程操作设备示例Android编译大全(六)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Python——将高德坐标(GCJ02)转换为GPS(WGS84)坐标

1 # 官方API: http://lbs.amap.com/api/webservice/guide/api/convert 2 # 坐标体系说明:http://lbs.amap.com/faq/top/coordinate/3 3 # GCJ02->WGS84 Java版本:http://www.cnblogs.com/xinghuan...

美化你的博客园,flash插件的使用

偶尔见到别人的博客侧边栏 有一些很有意思的flash插件,也想加入到自己博客里面,这里来大概讲一下~ 一、支持js代码 首先要在  博客设置 >开启博客侧边栏公告的js代码支持,提交审核后 很快就会通过,如图: 二、添加flash插件 之后我们要做的事情就很简单了,我们只需要将我们想要的flash插件代码粘贴进去,保存之后就搞定了~ 下面列举一些f...

PhpStorm快捷键设置/个性化设置,

#常用快捷键 设置快捷键:File -> Settings -> IDE Settings -> Keymap -> 选择“Eclipse” -> 然后“Copy”一份 -> 再个性化设置(自己习惯的)快捷键 快捷键 功能 Ctrl + / 双斜杠注释 Ctrl + Shilft + / 块注释 Alt...

解决 WPF 绑定集合后数据变动界面却不更新的问题

解决 WPF 绑定集合后数据变动界面却不更新的问题 独立观察员 2020 年 9 月 9 日 在 .NET Core 3.1 的 WPF 程序中打算用 ListBox 绑定显示一个集合(满足需求即可,无所谓什么类型的集合),以下是 Xaml 代码(瞟一眼就行,不是本文讨论重点): <ListBox ItemsSource="{Binding SipR...

.net core Identity学习(三) 第三方认证接入

简介 .net core在nuget中提供了微软、google、Facebook和twitter的Identity接入包,这里主要以MS作为例子。 微软官方文档可以参见这个链接,但是.net core的文档个人认为作为教学并不是特别好,利用了很多VS中的功能隐藏掉了很多细节,当当当点几下,就可以认证了,对于需要自定义一些流程的情况,可能会不方便,而且也不太...

SQL Server 2008 远程过程调用失败

今天在写程序的时候,突然间发现数据库连接不上了,打开管理器发现SQL2008出现这样的错误。 非常的郁闷,找了好多方法都没有解决,最后想想是不是应为安装vs2013中的SQL Server Express LocalDB的问题呢,于是把这个卸载掉,重新的打开管理器居然可以用了,然后马上重启服务,可以服务却启动失败了,原因是:1069,由于登陆失败而无法启...