我制作了一个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种样式,就像我的默认样式只有另一个角半径。
答案 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));