通过样式设置的WPF控件模板属性

时间:2018-09-26 09:17:30

标签: wpf xaml

在我们的项目中,按钮具有默认样式,该样式定义了按钮的模板,并且有一个Border,其属性为CornerRadius="0"

<Style TargetType="Button" x:Key="TemplatedButton">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="Button">
                <Border BorderBrush="{TemplateBinding BorderBrush}"
                        CornerRadius="0"
                        BorderThickness="{TemplateBinding BorderThickness}"
                        Background="{TemplateBinding Background}"
                        Padding="{TemplateBinding Padding}"
                        Cursor="{TemplateBinding Cursor}"
                        >
                    <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                                      VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                                      ContentStringFormat="{TemplateBinding ContentStringFormat}"
                                      RecognizesAccessKey="True"
                                      />
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

Button控件没有属性CornerRadius,因此不可能将该属性绑定到TemplateBinding,但是对于某些控件,我们需要自定义CornerRadius属性:

<Button Style="{StaticResource TemplatedButton}" x:Name="btn1" Content="Button with radius" /*HERE WE NEED TO SET CUSTOM CornerRadius*/ />

是否可以以某种方式更改“转角半径”?也许是继承它的样式,还是通过向btn1添加资源?

我看到可以通过将具有相同键的资源设置为不同的值来自定义默认属性,但是不知道如何实现。如果您提供任何有关实现方法的教程或文档,将不胜感激。

1 个答案:

答案 0 :(得分:0)

您需要创建一个继承自Button的新类,并添加所需的属性

ExceptionReceived

然后可以在样式/视图中代替标准按钮使用