如何创建一个新的按钮样式

本文关键字:按钮 样式 一个 何创建 创建 | 更新日期: 2023-09-27 18:14:02

你好,我用了很多按钮,我不喜欢鼠标在按钮上的动画效果,所以我发现了这个:

<Button.Style>
    <Style 
        TargetType="{x:Type Button}">
        <Setter 
            Property="OverridesDefaultStyle" Value="True"/>
        <Setter 
            Property="Margin" Value="5"/>
        <Setter 
            Property="Template">
            <Setter.Value>
                <ControlTemplate 
                    TargetType="{x:Type Button}">
                    <Border 
                        x:Name="border" 
                        BorderBrush="{x:Null}" 
                        BorderThickness="3" 
                        Background="{TemplateBinding Background}" 
                        CornerRadius="0" 
                        Padding="0">
                        <ContentPresenter 
                            HorizontalAlignment="Center" 
                            VerticalAlignment="Center"/>
                    </Border>
                    <ControlTemplate.Triggers>
                        <Trigger 
                            Property="IsMouseOver" 
                            Value="True">
                            <Setter 
                                Property="BorderBrush" 
                                TargetName="border" 
                                Value="#252525"/>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</Button.Style>

效果很好,所以我想知道如何创建一个名为"NoMouseOver"的新样式,我可以在这里选择:http://image.noelshack.com/fichiers/2016/42/1477013610-style.png

如何创建一个新的按钮样式

虽然你可以通过快速搜索(在stackoverflow或google上)找到问题的答案,但这里有一个简单的答案:

在Window/UserControl的Resources-section中创建样式:

<Windows.Resources>
    <Style x:Key="NoMouseOverStyle" TargetType="Button">
        ...
    </Style>
</Window.Resources>

之后你可以在属性中选择这个样式,或者直接在你的XAML中使用它。

<Button Style={StaticResource NoMouseOverStyle} />

请记住,如果您想在不同的窗口或用户控件中使用此样式,您可能需要使用ResourceDictionarys。

编辑正如Steffen所说,我删除了DynamicResource,并用StaticResource代替了它。

之前的答案是正确的,但出于性能原因,我会使用StaticResource而不是DynamicResource。

史蒂芬