如何创建新的按钮样式?

时间:2016-10-21 01:34:41

标签: c# wpf visual-studio

您好我使用了很多按钮,当鼠标悬停在按钮上时,我不喜欢“动画”,所以我发现了这个:

<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”的新Style,我可以在这里选择:http://image.noelshack.com/fichiers/2016/42/1477013610-style.png

2 个答案:

答案 0 :(得分:1)

虽然您可以通过快速搜索找到问题的答案(此处在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。

答案 1 :(得分:0)

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

此致

斯特芬