在WPF XAML中修改自定义样式按钮的边框

时间:2019-11-07 01:22:26

标签: c# wpf xaml

我正在尝试通过XAML代码实现this,但无济于事。

我有以下XAML代码:

App.xaml

<Style x:Key="ButtonStyle" TargetType="{x:Type Button}">
    <Setter Property="Background" Value="Black"/>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type Button}">
                <Grid>
                    <Path Fill="{TemplateBinding Background}"
                          Data="M 0,22.5 22.5,0 27.5,5 10,22.5 27.5,40 22.5,45"/>
                    <Border x:Name="border"
                            BorderThickness="2"
                            BorderBrush="Red"/>
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

并像这样使用它:

<Button Style="{StaticResource ButtonStyle}" Height="100" Width="100"/>

它给了我this,但我希望红色边框位于按钮内。

我尝试添加此内容

<Setter Property="BorderBrush" Value="Red"/>
<Setter Property="BorderThickness" Value="2"/>

不是创建网格,而是现在不显示边框。

我想我可以创建另一条充当边界的路径,但是有没有更简单的方法?

1 个答案:

答案 0 :(得分:0)

<Style x:Key="ButtonStyle" TargetType="{x:Type Button}">
    <Setter Property="Background" Value="Black"/>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type Button}">
                <Grid>
                    <Path Fill="{TemplateBinding Background}" Stroke="Red" StrokeThickness="3"
                      Data="M 0,22.5 22.5,0 27.5,5 10,22.5 27.5,40 22.5,45"/>
                    <Border x:Name="border"
                        BorderThickness="2"
                        BorderBrush="Red"/>
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

尝试使用Stroke和StrokeThickness属性。