【发布时间】:2020-05-29 20:08:09
【问题描述】:
我不知道我是否正确地表达了这个问题,但这是我的问题。
我在屏幕上有 3 个按钮。每个按钮都使用来自静态资源文件的相同MyButtonStyle。所有 3 个按钮的行为方式相同,但我希望每个按钮的边框具有不同的 CornerRadius 属性。由于 Button 本身没有 CornerRadius 属性,因此我不能像对背景和画笔那样使用TemplateBinding。我可以扩展基本样式以创建 3 个单独的样式,但我想尝试这样做。
这是我的代码:
<Style x:Key="MyButtonStyle" TargetType="{x:Type Button}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border Name="border"
BorderThickness="2"
BorderBrush="{TemplateBinding BorderBrush}"
Background="{TemplateBinding Background}"
CornerRadius = something >
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" />
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
所以问题是,我究竟应该将什么作为 CornerRadius 的值,以便能够从代码或 Window XAML 文件中为每个对象单独修改它?
我的目标是这样的,虽然我不确定它是否可行:
<Button x:Name="Button1"
Width="240"
Height="150"
Style="{StaticResource MyButtonStyle}"
BoundNameForCornerRadius="10"/>
【问题讨论】:
-
这确实解决了我面临的问题,但正如我所说,我想避免派生样式,而是只使用 1。
-
所有 3 个列出的选项只需要 1 种样式
标签: wpf xaml controltemplate wpf-style