我想将WPF按钮的形状从默认的圆形矩形更改为另一种形状(例如,箭头),但我想保留其余样式 - 填充颜色,边框颜色,悬停状态,我希望按钮具有与所有其他常规按钮相同的样式(我相信这取决于Windows的版本,系统主题颜色等等,所以我不能从头开始重新创建按钮样式并且硬编码正确的颜色)。
有没有办法做到这一点?
答案 0 :(得分:1)
您应该能够继承正常的按钮控件。然后,您可以使用自定义形状自定义子类按钮,但是将继承所有其他属性。这将允许您更改按钮的形状,而不是其他任何内容。
如果您有Blend,这是创建自定义按钮的好资源:
http://msdn.microsoft.com/en-us/library/bb613598.aspx
答案 1 :(得分:0)
制作default Button Template的副本,只需将默认面板更改为您自己的自定义形状。
对于按钮,您似乎需要将Border
替换为定义箭头的Path
之类的内容。
由于Path
没有内容,您可能必须将形状和内容放在另一个允许对象重叠的面板中,例如网格。
所以你的最终结果看起来像这样
<Grid>
<Path />
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" />
</Grid>
而不是默认
<Button>
<ContentPresenter />
</Button>
答案 2 :(得分:0)
如果要继承Button
的默认系统颜色/样式,可以在按钮TemplateBinding
中使用Template
。例如,如果您想创建一个与系统背景颜色相同的自定义形状按钮,则可以使用以下内容:
<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>
然后Ellipse
会继承Button
的背景颜色,但它会被设置。