You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为App.xaml中的Button样式添加边框并在MainWindow.xaml中使用?

WPF Button样式添加边框并全局引用示例

1. 在App.xaml中定义带边框的Button样式

直接在Button的ControlTemplate内嵌套Border元素,无需单独创建边框样式。示例代码如下:

<Application x:Class="YourAppName.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             StartupUri="MainWindow.xaml">
    <Application.Resources>
        <!-- 方式一:全局自动应用到所有Button(无x:Key) -->
        <Style TargetType="Button">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="Button">
                        <!-- 直接在模板内添加边框 -->
                        <Border x:Name="ButtonBorder"
                                BorderThickness="2"
                                BorderBrush="#FF0066CC"
                                Background="#FFE6F2FF"
                                CornerRadius="4">
                            <ContentPresenter HorizontalAlignment="Center"
                                              VerticalAlignment="Center"/>
                        </Border>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsPressed" Value="True">
                                <Setter TargetName="ButtonBorder" Property="Background" Value="#FF0066CC"/>
                                <Setter TargetName="ButtonBorder" Property="BorderBrush" Value="#FF003366"/>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>

        <!-- 方式二:指定x:Key,需手动引用 -->
        <Style x:Key="CustomBorderButton" TargetType="Button">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="Button">
                        <Border BorderThickness="1"
                                BorderBrush="Gray"
                                Background="White"
                                CornerRadius="2">
                            <ContentPresenter HorizontalAlignment="Center"
                                              VerticalAlignment="Center"/>
                        </Border>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </Application.Resources>
</Application>
  • 核心思路:把Border作为Button模板的根元素,直接设置BorderThickness、BorderBrush等属性,无需额外定义边框样式。
  • 两种定义方式:无x:Key的样式会自动应用到项目中所有Button;带x:Key的样式需要手动指定引用。

2. 在MainWindow.xaml中使用样式

根据你在App.xaml中定义的样式类型,有两种使用方式:

自动应用(无x:Key的样式)

不需要额外操作,所有Button会自动套用App.xaml中定义的全局样式:

<Window x:Class="YourAppName.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="450" Width="800">
    <Grid>
        <!-- 自动使用App.xaml中的全局Button样式 -->
        <Button Content="全局样式按钮" Width="120" Height="40"/>
    </Grid>
</Window>

手动引用(带x:Key的样式)

通过StaticResource指定样式的x:Key来引用:

<Window x:Class="YourAppName.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="450" Width="800">
    <Grid>
        <!-- 手动引用带x:Key的样式 -->
        <Button Content="自定义边框按钮" 
                Width="120" Height="40"
                Style="{StaticResource CustomBorderButton}"/>
    </Grid>
</Window>

内容的提问来源于stack exchange,提问作者SomiKoi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 21:35:12