我想有一个按钮定义没有CornerRadius
和两个其他的做,我怎么能做到这一点?
<Style TargetType="Button" x:Key="TabButton">
<Setter Property="Background" Value="White" />
<Setter Property="TextBlock.TextAlignment" Value="Center" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border CornerRadius="0" Background="White" BorderBrush="#ccc" BorderThickness="0,1,1,0" >
<ContentPresenter x:Name="contentPresenter" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style TargetType="Button" x:Key="TabButtonFirst" BasedOn="{StaticResource TabButton}">
<Setter Property="CornerRadius" Value="3,0,0,0" />
</Style>
<Style TargetType="Button" x:Key="TabButtonLast" BasedOn="{StaticResource TabButton}">
<Setter Property="CornerRadius" Value="0,0,0,3" />
</Style>
8条答案
按热度按时间7eumitmz1#
您并不局限于所模板化的控件的依赖项属性。在本例中,虽然
Button
没有CornerRadius
属性,但Border
有,因此您可以改用Border.CornerRadius
:使用此方法,您不再需要维护控件模板的多个副本。
hlswsv352#
只需创建一个新的Button,如下所示:
yhxst69z3#
正如Nitesh所说,您在Button上没有CornerRadius属性,它是Border的属性,正如您在第一个样式中所显示的,只需复制您的第一个样式并更改CornerRadius,然后将其分配给相应Button的样式。
p3rjfoxz4#
您可以直接使用
Style.Resources
并以边框为目标,而不使用ControlTemplate
:63lcw9qa5#
您可以使用附加属性来设置按钮边框半径(同样适用于文本框)。
为附加属性创建类
然后,您可以使用附加属性语法来设定多个按钮的样式,而不需要重复的样式:
guz6ccqo6#
我会创建自己的自定义按钮类(继承自Button),其中包含一个CornerRadius依赖属性。然后,样式的目标类型成为这个新类,您可以使用模板绑定来设置圆角半径。
使用这种方法,您不仅不需要维护控件模板的多个副本,而且不需要在每次要修改圆角半径时都创建新样式。您只需设置或直接绑定到CornerRadius依赖项属性。
因此,控件的程式码看起来可能如下所示:
而XAML:
因此,对于不需要圆角半径的按钮,由于dependency属性默认为0,因此不需要执行任何操作。对于具有圆角半径的按钮,只需将dependency属性设置为适当的值,就像对普通Border设置CornerRadius属性一样。
qnakjoqk7#
我在想把这个放在哪里,我把它放在我的
<Button Content="..
下面及以上
<Button.RenderTransform>
对我有用
093gszye8#