如何使用具有其他TextBox样式属性的TextBox样式

时间:2015-03-12 15:19:47

标签: wpf styles

我制作了一个TextBox样式,但现在我需要一些差异,例如另一个角半径。

这是我的默认风格:

<Style TargetType="TextBox">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type TextBoxBase}">
                    <Border
                        CornerRadius="10"
                        Padding="2"
                        Background="{DynamicResource DefaultItemBGBrush}"
                        BorderBrush="#C2C2C2"
                        BorderThickness="1" >
                        <ScrollViewer Margin="0" x:Name="PART_ContentHost" FontWeight="Bold" Foreground="#8D8D8D"/>
                    </Border>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

现在我想要一些具有相同属性的TextBox,但是例如CornerRadius =“10,10,0,0”和一个CornerRadius =“0,0,10,10”等等。

是否可以使用特殊的CornerRadius创建新样式并从默认TextBox中获取其他属性?我不想制作10种样式,就像我的默认样式只有另一个角半径。

1 个答案:

答案 0 :(得分:1)

您可以创建 CustomControl (继承自TextBox),您可以在其中创建名为CornerRadius的 DependencyProperty ,然后在您的样式中,可以访问依赖项属性。有关教程,请参阅here

public System.Windows.CornerRadius CornerRadius
    {
        get { return (System.Windows.CornerRadius)GetValue(CornerRadiusProperty); }
        set { SetValue(CornerRadiusProperty, value); }
    }

    // Using a DependencyProperty as the backing store for CornerRadius.  This enables animation, styling, binding, etc...
    public static readonly DependencyProperty CornerRadiusProperty =
        DependencyProperty.Register("CornerRadius", typeof(System.Windows.CornerRadius), typeof(YourControlClass), new PropertyMetadata(10));