[英]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.