我有一个自定义的用户控件,其中有一个按钮。我有各种使用此控件的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&#39; XAML后的按钮)
答案 0 :(得分: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>
使用您的自定义样式,它看起来像这样:
但它只是在设计时。在运行时没有边框。
修改强>
如果有边框画笔。它不在那种按钮样式中。
答案 1 :(得分:0)
要改进我发布的评论,请将BorderBrush
和BorderThickness
属性设置为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!"/>