簡體   English   中英

如何將此橢圓模板添加到我的按鈕邊框?

[英]How do I add this ellipse template to my button border?

我知道可能有與此類似的問題,但我不知道如何解決這個問題。 我對 XAML 相當陌生,並寫了以下內容:

    <Window.Resources>
        <ControlTemplate x:Key="ButtonTemplate">
            <Ellipse Height="300" StrokeThickness="2" Width="300" >
                <Ellipse.Fill>
                    <SolidColorBrush Color="white" Opacity="0"/>
                </Ellipse.Fill>
                    <Ellipse.Stroke>
                    <LinearGradientBrush EndPoint="1,1" StartPoint="0,0">
                        <GradientStop Color="Red" Offset="0.1"/>
                        <GradientStop Color="Orange" Offset="0.35"/>
                        <GradientStop Color="SeaGreen" Offset="0.7"/>
                        <GradientStop Color="DarkBlue" Offset="0.95"/>
                    </LinearGradientBrush>
                </Ellipse.Stroke>
            </Ellipse>
        </ControlTemplate>
    </Window.Resources>
    <Grid>
        <Button Height="320" Width="320" Margin="200,100,200,100" Background="White" BorderThickness="0">
            <Button.Foreground>
                <LinearGradientBrush StartPoint="0,0" EndPoint="1,1">
                    <GradientStop Color="Crimson" Offset="0.1" />
                    <GradientStop Color="SeaGreen" Offset="0.9" />
                </LinearGradientBrush>
            </Button.Foreground>
            <Button.Content>
                <TextBlock FontSize="30">TEST BUTTON</TextBlock>
            </Button.Content>
        </Button>
    </Grid>

將圓圈放在模板中似乎是開始在按鈕上獲得圓形邊框的普遍認可的方式,但從那里對我來說似乎沒有任何效果。 我已將模板與此處的按鈕斷開連接,因為它不起作用,而似乎只是在原本可以工作的按鈕之上覆蓋了一個實心圓圈。 有人可以幫我嗎?

您應該指定TargetType並將ContentPresenter添加到ControlTemplate

<ControlTemplate x:Key="ButtonTemplate" TargetType="Button">
    <Grid>
        <Ellipse Height="300" StrokeThickness="2" Width="300" >
            <Ellipse.Fill>
                <SolidColorBrush Color="White" Opacity="0"/>
            </Ellipse.Fill>
            <Ellipse.Stroke>
                <LinearGradientBrush EndPoint="1,1" StartPoint="0,0">
                    <GradientStop Color="Red" Offset="0.1"/>
                    <GradientStop Color="Orange" Offset="0.35"/>
                    <GradientStop Color="SeaGreen" Offset="0.7"/>
                    <GradientStop Color="DarkBlue" Offset="0.95"/>
                </LinearGradientBrush>
            </Ellipse.Stroke>
        </Ellipse>
        <ContentPresenter Focusable="False" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" 
                        Margin="{TemplateBinding Padding}" RecognizesAccessKey="True" 
                        SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
                        VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
    </Grid>
</ControlTemplate>

並且不要忘記通過設置ButtonTemplate屬性來應用自定義模板:

<Button Height="320" Width="320" Background="White" BorderThickness="0"
        Template="{StaticResource ButtonTemplate}">
    <Button.Foreground>
        <LinearGradientBrush StartPoint="0,0" EndPoint="1,1">
            <GradientStop Color="Crimson" Offset="0.1" />
            <GradientStop Color="SeaGreen" Offset="0.9" />
        </LinearGradientBrush>
    </Button.Foreground>
    <Button.Content>
        <TextBlock FontSize="30">TEST BUTTON</TextBlock>
    </Button.Content>
</Button>

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM