使用 MahApps.Metro 主题覆盖 Expander ToggleButton 样式

Overwrite Expander ToggleButton style with MahApps.Metro theming

我正在使用 MahApps.Metro 来设计我的 WPF 应用程序的样式。在一些地方,我使用 <Expander> 作为弹出菜单。

但是,切换箭头的默认方向在逻辑上是向后的(它显示当前状态,而不是单击按钮将执行的操作)。

所以目前,这还没有展开:

这是展开的:

我想交换这些,使扩展点向左,而不是向右扩展。我不能使用 ExpandDirection="Right",因为那样 header 就在错误的一边。

默认样式在这里:https://github.com/MahApps/MahApps.Metro/blob/develop/src/MahApps.Metro/Styles/Controls.Expander.xaml - 我不想把它全部粘贴在这里,因为它太长了。

我的理解是,我需要做的就是将 MahApps.Styles.ToggleButton.ExpanderHeader.LeftMahApps.Styles.ToggleButton.ExpanderHeader.Right 中的 RotateTransform Angle 从 90 更改为 -90 或 visa-versa。

我可以只覆盖该样式的这一特定部分,而不影响其他所有内容吗?

目前,如果我在 App.xaml 中创建新样式,我可以反转箭头方向,但我会丢失所有我想保留的主题(颜色等)。

您可以使用 ExpanderHelper 为左侧展开方向设置右侧 header 样式:

<Expander IsExpanded="False"
          ExpandDirection="Left"
          Height="200"
          mah:ExpanderHelper.HeaderLeftStyle="{DynamicResource MahApps.Styles.ToggleButton.ExpanderHeader.Right}">
</Expander>

命名空间是 xmlns:mah="http://metro.mahapps.com/winfx/xaml/controls".