.net 更改WPF按钮的形状而不更改其他样式
我想将WPF按钮的形状从默认的圆形矩形更改为另一个形状(例如箭头),但我想保留其余的样式--填充颜色、边框颜色、悬停状态等。我希望按钮与所有其他常规按钮具有相同的样式(我认为这取决于Windows的版本、系统主题颜色等。因此,我不能从头开始重新创建按钮样式并硬编码正确的颜色) 有什么方法可以做到这一点吗?复制,只需将默认面板更改为您自己的自定义形状即可 对于按钮,您似乎需要将.net 更改WPF按钮的形状而不更改其他样式,.net,wpf,.net,Wpf,我想将WPF按钮的形状从默认的圆形矩形更改为另一个形状(例如箭头),但我想保留其余的样式--填充颜色、边框颜色、悬停状态等。我希望按钮与所有其他常规按钮具有相同的样式(我认为这取决于Windows的版本、系统主题颜色等。因此,我不能从头开始重新创建按钮样式并硬编码正确的颜色) 有什么方法可以做到这一点吗?复制,只需将默认面板更改为您自己的自定义形状即可 对于按钮,您似乎需要将边框替换为定义箭头的路径 由于路径没有内容,您可能需要将形状和内容放在另一个允许对象重叠的面板中,例如网格 所以你的最终结
边框
替换为定义箭头的路径
由于路径没有内容,您可能需要将形状和内容放在另一个允许对象重叠的面板中,例如网格
所以你的最终结果是这样的
<Grid>
<Path />
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" />
</Grid>
而不是默认值
<Button>
<ContentPresenter />
</Button>
您应该能够对普通按钮控件进行子类化。然后您可以使用自定义形状自定义子类化按钮,但所有其他属性都将被继承。这将允许您更改按钮的形状,而无需更改其他内容
如果您有Blend,这里有一个创建自定义按钮的好资源:
如果要继承按钮的默认系统颜色/样式
,可以在按钮模板
中使用模板绑定
。例如,如果要创建与系统按钮具有相同背景色的自定义形状按钮,可以使用以下选项:
<Button>
<Button.Template>
<ControlTemplate TargetType="Button">
<Grid>
<!-- circle to have inherited colour -->
<Ellipse Fill="{TemplateBinding Background}" Height="50" Width="50" />
<ContentPresenter />
</Grid>
</ControlTemplate>
</Button.Template>
</Button>
椭圆
将继承按钮
的背景色,不管它是如何设置的。这确实正确地获得了背景色,但它只是一个圆。没有边框,没有悬停或单击状态,内容上没有渐变光泽。我试图避免从头开始制作整个按钮。我如何获得“默认按钮模板"?您链接到的MSDN文章有一个示例模板,但它不是默认模板。@HenryJackson我认为它是颜色以外的默认模板。默认情况下,它从SystemColor
中提取颜色。另一种方法是在Expression Blend中复制模板。您能给我一个如何仅覆盖边界的示例吗?T这篇MSDN文章展示了如何在Blend中从头开始创建主题,这并不是我想要做的。