我怎样才能拥有具有其他 TextBox 样式属性的 TextBox 样式

How can I have a TextBox style with properties of other TextBox style

我制作了一个 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>

现在我想要一些具有相同属性的文本框,例如 CornerRadius="10,10,0,0" 和一个 CornerRadius="0,0,10,10" 等等。

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

您可以创建一个 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));