第一种方式是直接使用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 点滴记录
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!