017.WPF使用自定义样式

在WPF中,自定义样式是其强大之处之一,它允许您完全控制UI元素的外观和行为,而无需修改其核心逻辑。这主要通过Style和ControlTemplate

一.样式Style

允许您为控件的属性设置预定义的值,并可以包含触发器来响应属性变化或事件。

主要属性组成部分:

TargetType :

最重要的属性,用于将样式映射到控件上,如

cs 复制代码
TargetType="Button"

x:Key :

重要的属性:界面就是通过key来调用样式的

Setters

定义要设置的属性及其值。

Triggers

当某个条件(例如,属性值改变,或事件发生)满足时,应用一组

二.资源字典

这是最常见和推荐的方式,因为它允许样式在整个应用程序、窗口或用户控件中重用。

wpf的全局字典是App.xaml这个文件,直接修改这个文件可以修改全局样式,我们也可以使用自定义字典,右键项目--新建项---wpf---资源字典

新建一个.xaml资源字典文件,例如style.xaml

XML 复制代码
<!-- Themes/ButtonStyles.xaml -->
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

   


    <!-- TextBlock样式 -->
    <Style x:Key="TextBlockStyle" TargetType="TextBlock">
        <Setter Property="Foreground" Value="Black"/>
        <Setter Property="FontSize" Value="16"/>
        <Setter Property="Padding" Value="15,8"/>
        <Setter Property="Cursor" Value="Hand"/>
        
    </Style>

    <!-- Button样式 -->
    <Style x:Key="ButtonStyle" TargetType="Button">
        <Setter Property="Background" Value="#FF6200EE"/>
        <Setter Property="Foreground" Value="White"/>
        <Setter Property="FontSize" Value="16"/>
        <Setter Property="Padding" Value="15,8"/>
        <Setter Property="BorderThickness" Value="0"/>
        <Setter Property="Cursor" Value="Hand"/>
    </Style>

</ResourceDictionary>

三.在窗口中使用自定义样式

界面中引入样式字典

XML 复制代码
<Window x:Class="NX_API.HomePage"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:NX_API"
        mc:Ignorable="d"
        Title="机械设计" Height="1050" Width="1450" Background="#7B68EE">
    
    <Window.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <!-- 合并 DLL 内部的资源字典 -->
                <ResourceDictionary Source="/NX_API;component/Resource/Style/style.xaml"/>
                <!-- 注意:Source 路径格式为 /程序集名称;component/资源文件路径 -->
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Window.Resources>

   


</Window>

调用样式命令

{StaticResource 样式的key}

XML 复制代码
 <TextBlock HorizontalAlignment="Left" Margin="10,20,0,0" TextWrapping="Wrap" Text="螺纹类型:" VerticalAlignment="Top" 
Style="{StaticResource TextBlockStyle}" />

此时界面上的textbox控件就会显示我们自定义的样式,其他空间也是这样映射使用

相关推荐
一个天蝎座 白勺 程序猿6 小时前
IoTDB集群扩容:从慌乱到从容的经验分享
数据库·wpf·时序数据库·iotdb
samble1 天前
从零搭建灌装监控系统(十三):报警系统设计,生命周期与通知
c#·wpf·mvvm·modbus·工业控制
samble2 天前
从零搭建灌装监控系统(十二):配置系统,原子写入与容错
c#·wpf·mvvm·modbus·工业控制
蜗牛互联网4 天前
OLMo-core 3的token gerrymandering提醒:MoE路由要按时间窗验收
java·人工智能·wpf
LateFrames4 天前
WPF 升级选型:用 .NET 8 还是 .NET 10
.net·wpf·.net8·.net10
samble5 天前
从零搭建灌装监控系统(十):生产追溯,条码触发自动记录
c#·wpf·mvvm·modbus·工业控制
SamChan907 天前
PDF页面旋转与CropBox陷阱:译文回填位置总是错位的根因实测
python·ai·pdf·wpf
SamChan908 天前
PDF翻译时页眉页脚总在捣乱?跨页重复文本块的检测与过滤实测
人工智能·python·ai·pdf·wpf
samble15 天前
从零搭建灌装监控系统(四):深色主题与样式系统,ResourceDictionary 统一管理
c#·wpf·mvvm·样式·工业控制
_Jonas15 天前
.net framework开发环境正式环境配置文件的切换
.net·wpf