繁体   English   中英

WPF按钮-一起指定模板和样式

[英]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整体定义:

WPF:有没有一种方法可以重写ControlTemplate的一部分而不重新定义整个样式?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM