Dot-Net
如何在 WPF 中創建/製作圓角按鈕?
我需要在 WPF中創建一個**圓角光澤按鈕。**誰能解釋一下需要哪些步驟?
您必須為按鈕創建自己的 ControlTemplate。看看樣品
創建了一個名為 RoundCorner 的樣式,在其中我進行了更改,而是為圓角和一些背景和其他觸發效果創建了自己的帶邊框 (CornerRadius=8) 的新控制項模板。如果您擁有或了解 Expression Blend,則可以非常輕鬆地完成。
<Style x:Key="RoundCorner" TargetType="{x:Type Button}"> <Setter Property="HorizontalContentAlignment" Value="Center"/> <Setter Property="VerticalContentAlignment" Value="Center"/> <Setter Property="Padding" Value="1"/> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type Button}"> <Grid x:Name="grid"> <Border x:Name="border" CornerRadius="8" BorderBrush="Black" BorderThickness="2"> <Border.Background> <RadialGradientBrush GradientOrigin="0.496,1.052"> <RadialGradientBrush.RelativeTransform> <TransformGroup> <ScaleTransform CenterX="0.5" CenterY="0.5" ScaleX="1.5" ScaleY="1.5"/> <TranslateTransform X="0.02" Y="0.3"/> </TransformGroup> </RadialGradientBrush.RelativeTransform> <GradientStop Offset="1" Color="#00000000"/> <GradientStop Offset="0.3" Color="#FFFFFFFF"/> </RadialGradientBrush> </Border.Background> <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" TextElement.FontWeight="Bold"> </ContentPresenter> </Border> </Grid> <ControlTemplate.Triggers> <Trigger Property="IsPressed" Value="True"> <Setter Property="Background" TargetName="border"> <Setter.Value> <RadialGradientBrush GradientOrigin="0.496,1.052"> <RadialGradientBrush.RelativeTransform> <TransformGroup> <ScaleTransform CenterX="0.5" CenterY="0.5" ScaleX="1.5" ScaleY="1.5"/> <TranslateTransform X="0.02" Y="0.3"/> </TransformGroup> </RadialGradientBrush.RelativeTransform> <GradientStop Color="#00000000" Offset="1"/> <GradientStop Color="#FF303030" Offset="0.3"/> </RadialGradientBrush> </Setter.Value> </Setter> </Trigger> <Trigger Property="IsMouseOver" Value="True"> <Setter Property="BorderBrush" TargetName="border" Value="#FF33962B"/> </Trigger> <Trigger Property="IsEnabled" Value="False"> <Setter Property="Opacity" TargetName="grid" Value="0.25"/> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> </Setter.Value> </Setter> </Style>使用
<Button Style="{DynamicResource RoundCorner}" Height="25" VerticalAlignment="Top" Content="Show" Width="100" Margin="5" />
我知道這篇文章已經很老了,但我有一個答案令人驚訝地從上面遺漏了,而且比大多數人都簡單得多。
<Button> <Button.Resources> <Style TargetType="Border"> <Setter Property="CornerRadius" Value="5"/> </Style> </Button.Resources> </Button>由於 Button 控制項的預設 ControlTemplate 使用 Border 元素,因此將 Border 樣式添加到 Button 的資源會將該樣式應用於該 Border。這使您無需製作自己的 ControlTemplate 也無需任何程式碼即可添加圓角。它也適用於所有種類的 Button(例如 ToggleButton 和 RepeatButton)。