简体   繁体   English

WPF按钮样式,模板?

[英]WPF Button Styling, Templates?

I am very close to getting what I want, but I don't like the background poking out beyond the border on the corners. 我非常想要得到想要的东西,但是我不喜欢背景从角落的边界露出来。 Can anyone point me to the right way to style the background to also round the corners? 谁能指出我设计背景的正确方法,也可以使角落变得圆满? thanks. 谢谢。

<Button  FontSize="16" Height="50" >
    <Button.Content>
        <Border CornerRadius="5" Padding="5" Margin="0" BorderBrush="GreenYellow" BorderThickness="2" Height="50" >
            <TextBlock Text="Work Order Manager" HorizontalAlignment="Center" VerticalAlignment="Center"/>
        </Border>

    </Button.Content>

    <Button.Style>
        <Style TargetType="{x:Type Button}">
            <Setter Property="Background" Value="Green"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type Button}">
                        <Border Background="{TemplateBinding Background}">
                            <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
                        </Border>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
            <Style.Triggers>
                <Trigger Property="IsMouseOver" Value="True">
                    <Setter Property="Background" Value="DarkGoldenrod"/>
                </Trigger>
            </Style.Triggers>
        </Style>
    </Button.Style>

</Button>

If you want to round the whole button then move CornerRadius to button's template: 如果要舍入整个按钮,则将CornerRadius移动到按钮的模板:

<Button  FontSize="16" Height="50" Padding="5" Content="Work Order Manager" >
    <Button.Style>
        <Style TargetType="{x:Type Button}">
            <Setter Property="Background" Value="Green"/>
            <Setter Property="BorderBrush" Value="GreenYellow"/>
            <Setter Property="BorderThickness" Value="2"/>
            <Setter Property="HorizontalContentAlignment" Value="Center"/>
            <Setter Property="VerticalContentAlignment" Value="Center"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type Button}">
                        <Border Background="{TemplateBinding Background}"
                                CornerRadius="5" 
                                BorderBrush="{TemplateBinding BorderBrush}"
                                BorderThickness="{TemplateBinding BorderThickness}" 
                                >
                            <ContentPresenter 
                                Margin="{TemplateBinding Padding}"
                                HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" 
                                VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                                />
                        </Border>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
            <Style.Triggers>
                <Trigger Property="IsMouseOver" Value="True">
                    <Setter Property="Background" Value="DarkGoldenrod"/>
                </Trigger>
            </Style.Triggers>
        </Style>
    </Button.Style>
</Button>

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

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