【问题标题】:Button ControlTemplate and rounded corners按钮 ControlTemplate 和圆角
【发布时间】:2010-04-07 16:18:18
【问题描述】:

我有一个按钮控制模板。我想制作圆角的按钮。我该怎么做?

我尝试使用 CornerRadius 作为边框中的按钮,但它不起作用。按钮的背景已设置为具有角边框的图像,并且按钮看起来很糟糕,因为我无法为按钮设置角。

【问题讨论】:

  • 发布您的 ControlTemplate 标记。
  • 上面贴了我的ControlTemplate,CornerRadius没有效果。

标签: wpf wpf-controls


【解决方案1】:

尝试以下方法:

<Style x:Key="GlassButton" TargetType="{x:Type Button}">
    <Setter Property="FontSize" Value="42" />
    <Setter Property="Foreground" Value="White" />
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type Button}">
                <Border x:Name="border"
                        CornerRadius="25"
                        BorderThickness="4"
                        Background="#AA000000"
                        BorderBrush="Red"
                        RenderTransformOrigin="0.5,0.5">
                    <ContentPresenter x:Name="ButtonContentPresenter"
                                      VerticalAlignment="Center"
                                      HorizontalAlignment="Center" />
                </Border>

                <ControlTemplate.Triggers>
                    <Trigger Property="IsMouseOver" Value="True">
                        <Setter TargetName="border" Property="BorderBrush" Value="#FF4788c8" />
                        <Setter Property="Foreground" Value="#FF4788c8" />
                    </Trigger>
                    <Trigger Property="IsPressed" Value="True">
                        <Setter Property="Background">
                            <Setter.Value>
                                <LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
                                    <GradientStop Color="#FFFFD190" Offset="0.35" />
                                    <GradientStop Color="Orange" Offset="0.95" />
                                    <GradientStop Color="#FFFFD190" Offset="1" />
                                </LinearGradientBrush>
                            </Setter.Value>
                        </Setter>
                        <Setter TargetName="content" Property="RenderTransform">
                            <Setter.Value>
                                <TranslateTransform Y="1.0" />
                            </Setter.Value>
                        </Setter>
                    </Trigger>
                    <Trigger Property="IsDefaulted" Value="True">
                        <Setter TargetName="border" Property="BorderBrush" Value="#FF282828" />
                    </Trigger>
                    <Trigger Property="IsFocused" Value="True">
                        <Setter TargetName="border" Property="BorderBrush" Value="#FF282828" />
                    </Trigger>
                    <Trigger Property="IsEnabled" Value="False">
                        <Setter TargetName="border" Property="Opacity" Value="0.7" />
                        <Setter Property="Foreground" Value="Gray" />
                    </Trigger>

                </ControlTemplate.Triggers>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

【讨论】:

  • 天哪,在 ios 故事板中 - 它只是一个动态属性。 “layer.cornerRadius”。看到这个后,我放弃了在 Windows 应用程序中创建圆角。 :D
  • @Dhana 它也只是一个属性。但是 Button 是由 Border-Object 和 Content Presenter 组成的,所以你必须编辑 Button Template 因为你只需要改变边框元素的 Corner Radius。
猜你喜欢
  • 2019-05-17
  • 2011-05-04
  • 1970-01-01
  • 1970-01-01
  • 2013-10-01
  • 2015-07-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多