wpf - 添加自定义触发器时如何保留 mahapps 地铁样式?

标签 wpf mahapps.metro

我有一个以默认地铁样式设计的按钮。但是,当我向按钮添加触发器时,样式被覆盖。添加自己的样式和触发器时如何保留原始的 mahapps Metro 样式?

    <Button x:Name="startButton" Content="Start" HorizontalAlignment="Right"  VerticalAlignment="Bottom" Margin="0,0,20,26" Width="75" Click="startButton_Click" Height="67" Grid.Column="1">
        <!--<Button.Style>
            <Style TargetType="Button">
                <Style.Triggers>
                    <Trigger Property="IsMouseOver" Value="True">
                        <Setter Property="Foreground" Value="Red"></Setter>
                    </Trigger>
                </Style.Triggers>
            </Style>
        </Button.Style>-->
    </Button>

这是按钮最初的样子

Before

这是我添加触发器后的样子

After

最佳答案

您需要将样式的“BasedOn”属性设置为 mahapps.metro 提供的默认属性:

<Style TargetType="Button" BasedOn="{StaticResource MetroButton}">

该文档没有说明默认的静态资源,但在您导入的 Controls.xaml 的源代码中跟踪它是很容易的,以便在您的 app.xaml(或窗口顶部等)中加载默认样式:

https://github.com/MahApps/MahApps.Metro/tree/develop/src/MahApps.Metro/Styles

搜索 TargetType="Button"会找到我们的默认样式(没有键):

甚至也基于基础样式,MahApps.Metro.Styles.MetroButton .

关于wpf - 添加自定义触发器时如何保留 mahapps 地铁样式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41832843/

相关文章:

c# - 等待 MahApps Metro Dialog 返回结果

c# - mahapps 地铁 showMessageAsync 错误 : "Object reference not set to an instance of an object"

WPF - 使两个扩展器填充可用空间,具体取决于显示的是哪一个

c# - 安装 Enterprise Lib 5.0 后找不到 Microsoft.Practices.ObjectBuilder2.dll

c# - XAML 2 组合框颜色样式与资源字典?

wpf - 简单注入(inject)器 WPF 无效 uri

c# - 与 MahAppsMetro ProgressIndicator 绑定(bind)失败

MVVM 环境中的 WPF Datagrid RowEditEnding

c# - WPF MVVM 绑定(bind)嵌套属性

c# - 迭代到 WPF Datagrid 中的所有单元格