本人想设置Button为圆角,奈何搜索百度,找到的全是坑爹答案,现总结如下:
1. 需要添加button 的template.
2. 设置border的时候,必须要设置background, 否则会提示content 被多次使用。
- <Button Grid.Row="3" Grid.Column="2" Content="取消" Margin="30,40,200,40" >
- <Button.Template >
- <ControlTemplate TargetType="{x:Type Button}" >
- <Border BorderBrush="{TemplateBinding Control.BorderBrush}" BorderThickness="1" CornerRadius="7,7,7,7">
- <Border.Background>#FFDDDDDD</Border.Background>
- <ContentPresenter Content="{TemplateBinding ContentControl.Content}" HorizontalAlignment="Center" VerticalAlignment="Center" ></ContentPresenter>
- </Border>
- </ControlTemplate>
- </Button.Template>
- </Button>
我们只需要在XAML中给他添加几行代码就可以做成圆角形状。
- <Button x:Name="button" Content="按钮" FontSize="40" BorderThickness="0" HorizontalAlignment="Left" Margin="25,58,0,0" VerticalAlignment="Top" Width="472" Height="200" Foreground="White">
- <Button.Template>
- <ControlTemplate TargetType="{x:Type Button}">
- <Border BorderThickness="1" BorderBrush="Black" CornerRadius="30" Background="{TemplateBinding Background}">
- <ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Center"/>
- </Border>
- </ControlTemplate>
- </Button.Template>
- </Button>
属性解析:
BorderThickness:边框的大小
BorderBrush:边框的颜色
CornerRadius:圆角的大小
Background:背景颜色"{TemplateBinding Background}":这个就是使用上面<Button>的Background属性值作为他的值
<ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Center"/>:文字垂直居中对齐
加个渐变色
- <Button x:Name="button" Content="按钮" FontSize="40" BorderThickness="0" HorizontalAlignment="Left" Margin="25,58,0,0" VerticalAlignment="Top" Width="472" Height="200" Foreground="White">
- <Button.Background>
- <LinearGradientBrush EndPoint="1,1" StartPoint="0,0">
- <GradientStop Color="#FFC564B8" Offset="0"/>
- <GradientStop Color="#FFF57A7A" Offset="1"/>
- </LinearGradientBrush>
- </Button.Background>
- <Button.Template>
- <ControlTemplate TargetType="{x:Type Button}">
- <Border BorderThickness="1" CornerRadius="30" Background="{TemplateBinding Background}">
- <ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Center"/>
- </Border>
- </ControlTemplate>
- </Button.Template>
- </Button>
如图:
项目实例:
把样式和空间模板放到资源中,然后去引用
- <Window x:Class="WpfApp18.MainWindow"
- xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
- xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
- xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
- xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
- xmlns:local="clr-namespace:WpfApp18"
- mc:Ignorable="d"
- Title="MainWindow" Height="450" Width="800">
- <Window.Resources >
- <ResourceDictionary >
- <Style x:Key="dgButton" TargetType="Button" >
- <Setter Property="FontSize" Value="40"/>
- <Setter Property="Content" Value="按钮"/>
- <Setter Property="Foreground" Value="White"/>
- <Setter Property="Background">
- <Setter.Value>
- <!--<RadialGradientBrush>
- <GradientStop Color="#FFC564B8" Offset="0"/>
- <GradientStop Color="#FFF57A7A" Offset="1"/>
- </RadialGradientBrush>-->
- <LinearGradientBrush EndPoint="1,1" StartPoint="0,0">
- <GradientStop Color="#FFC564B8" Offset="0"/>
- <GradientStop Color="#FFF57A7A" Offset="1"/>
- </LinearGradientBrush>
- </Setter.Value>
- </Setter>
- </Style >
- <ControlTemplate x:Key="buttonTemplate" TargetType="Button" >
- <Border BorderThickness="1" CornerRadius="30" Background="{TemplateBinding Background}">
- <ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Center"/>
- </Border>
- <!--<Grid >
- <Ellipse Name="faceEllipse" Height="50" Width="100" Fill="{TemplateBinding Button.Background}"/>
- <TextBlock Name="txtBlock" />
- </Grid >-->
- <ControlTemplate.Triggers >
- <Trigger Property="Button.IsMouseOver" Value="True">
- <Setter Property="Button.Background" Value="blue"/>
- </Trigger >
- </ControlTemplate.Triggers >
- </ControlTemplate >
- </ResourceDictionary >
- </Window.Resources >
- <Grid>
- <Button Height="200" HorizontalAlignment="Center" Name="button1" VerticalAlignment="Center" Width="400" Style ="{StaticResource dgButton}" Template="{StaticResource buttonTemplate}"/>
- </Grid>
- </Window>
本文转载自微信公众号「CSharp编程大全」,可以通过以下二维码关注。转载本文请联系CSharp编程大全公众号。
【编辑推荐】