[英]WPF Button - Specifying Template and Style together
我有一个按钮:
<Button x:Name="someButton"
Template="{StaticResource aButtonTemplate}"
Command="{Binding MyCommand}"
Style="{StaticResource ButtonStyle1}" >
现在, aButtonTemplate看起来像:
<ControlTemplate x:Key="aButtonTemplate" TargetType="{x:Type Button}">
<Border Name="border" Background="Transparent" BorderBrush="Transparent" BorderThickness="2">
<ContentPresenter x:Name="content" />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="border" Property="BorderBrush" Value="Red"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
然后我有ButtonStyle1
<Style x:Key="ButtonStyle1" TargetType="{x:Type Button}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Viewbox>
<Grid>
<Ellipse Stroke="#f2f2f0" StrokeThickness="3" Fill="red" Width="77" Height="77"/>
</Grid>
</Viewbox>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
现在的问题是,由于出现了行Template="{StaticResource aButtonTemplate}"
因此样式ButtonStyle1没有得到应用。 我没有看到任何椭圆形。
如何使样式与模板一起使用?
编辑:当我再次在样式ButtonStyle1中指定ControlTemplate时,是否有一种方法可以使用BasedOn将两种样式组合成ButtonStyle2? 我该怎么做?
<Style x:Key="StyleButton2"
TargetType="Button"
BasedOn="{StaticResource StyleButton1}">
<Setter Property="Template"
Value="{StaticResource aButtonTemplate}"/>
</Style>
然后在Button实例上仅使用此样式。
显然,在此样式之前定义了StyleButton1和aButtonTemplate(因为使用了StaticResource)。
如何使样式与模板一起使用?
将都被应用,但Template
,你设置属性{StaticResource aButtonTemplate}
覆盖的值Template
属性的Style
集。 本地值优先于样式设置器设置的值: https ://msdn.microsoft.com/zh-cn/library/ms743230( v= vs.110) .aspx 。
编辑:当我再次在样式ButtonStyle1中指定ControlTemplate时,是否有一种方法可以使用BasedOn将两种样式组合成ButtonStyle2? 我该怎么做?
您可以将Style
基于另一个Style
但是不能将ControlTemplate
放置在另一个ControlTemplate
。 必须将ControlTemplate
整体定义:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.