0

我有一个定制的用户控件,里面有一个按钮。我有各种使用此控件的 XAML,但在其中一个 XAML 中,我希望按钮上有一个图像。这很好用,但我似乎无法让按钮的边框消失。我可以设置背景颜色、边框粗细和其他各种属性,但无论我做什么我都无法摆脱边框。我已经查看了有关如何使用样式覆盖模板的各种 SO 主题,但这似乎也对我没有帮助。下面是我尝试无济于事的最后一段片段。

<Style TargetType="{x:Type CustomButton}" x:Key="btnnoborder">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type CustomButton}">
                <Border Background="Transparent">
                    <ContentPresenter/>
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

编辑

我附上了我在测试任何这些片段时看到的小图像

默认图片(常用按钮)

维克多·拉克鲁瓦(使用 Viktor La Croix 的 XAML 后的按钮)

4

2 回答 2

1

我不打算回答这个问题,但你运行了吗?你确定它不仅在设计时吗?我用了你的风格,效果很好。运行时没有边框。在设计时,我看到按钮本身的边框和该按钮内的图像。

在此处输入图像描述

我的自定义样式:

    <UserControl.Resources>
    <Style x:Key="ButtonStyle2" TargetType="{x:Type Button}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type Button}">
                    <Grid>
                        <Rectangle/>
                        <ContentPresenter HorizontalAlignment="Left" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" Margin="11,7,0,9"/>
                    </Grid>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsFocused" Value="True"/>
                        <Trigger Property="IsDefaulted" Value="True"/>
                        <Trigger Property="IsMouseOver" Value="True"/>
                        <Trigger Property="IsPressed" Value="True"/>
                        <Trigger Property="IsEnabled" Value="False"/>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</UserControl.Resources>

    <Button Style="{StaticResource ButtonStyle2}" Height="30" HorizontalAlignment="Left" Margin="782,211,0,0" Name="button5" VerticalAlignment="Top" Width="129">
        <Image Source="image.png"/>
    </Button>

使用您的自定义样式,它看起来像这样:

在此处输入图像描述

但这只是在设计时。在运行时没有边界。

编辑

如果有任何边框刷。它不在那个按钮样式中。

于 2012-11-26T15:36:06.700 回答
0

为了改进我发布的评论,将BorderBrushandBorderThickness属性设置为一个TemplateBinding值:

<Style TargetType="{x:Type CustomButton}" x:Key="btnnoborder">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type CustomButton}">
                <Border Background="Transparent" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}">
                    <ContentPresenter/>
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

这将允许您的按钮从声明它的实例继承值:

<local:CustomButton BorderBrush="Transparent" BorderThickness="0" Content="Click Me!"/>
于 2012-11-26T15:25:37.810 回答