簡體   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