使用 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.Left
和 MahApps.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"
.
我正在使用 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.Left
和 MahApps.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"
.