使用 MahApps,我们如何更改 Expander 的 ToggleButton 的 MouseOver 样式?
Using MahApps, how can we change MouseOver style of Expander's ToggleButton?
我的 WPF 使用的是 MahApps metro 框架。如下图 2 所示,将鼠标悬停在应用程序的任何 Expander
控件的 header 上会使 header 的 ToggleButton
几乎不可见。
问题:如何让这个切换按钮更加突出?
XAML:
<!-- ... -->
<Expander Header="Test expander" Width="145" Padding="0">
<StackPanel>
<Button Content="Button 1" Foreground="White"/>
<Button Content="Button 2" Foreground="White"/>
</StackPanel>
</Expander>
<!-- ... -->
鼠标悬停在 Header:
上时显示上述扩展器
鼠标悬停在 Header:
上时显示上述扩展器
如你所见,左边的ToggleButton
几乎看不见。
Expander
控件有 4 种不同的样式,分别用于上、下、左和右方向。它们都使用 triggers in the repective control templates.
以相同的方式定义 Mouse Over 状态
<ControlTemplate.Triggers>
<!-- ... -->
<Trigger Property="IsMouseOver" Value="true">
<Setter TargetName="Arrow" Property="Stroke" Value="{DynamicResource MahApps.Brushes.Gray2}" />
<Setter TargetName="Circle" Property="Stroke" Value="{DynamicResource MahApps.Brushes.Gray2}" />
</Trigger>
<!-- ... -->
</ControlTemplate.Triggers>
如您所见,setter 直接使用 DynamicResource
分配 MahApps.Brushes.Gray2
。它们未绑定到任何 属性 或以样式设置,因此几乎没有选项可以更改它,例如:
通过复制默认样式并调整 鼠标悬停 为 MahApps.Styles.ToggleButton.ExpanderHeader.Down
(以及任何面向不同的 Expander
创建自定义样式触发器。
用不同的笔刷覆盖 MahApps.Brushes.Gray2
或创建自定义主题。
<SolidColorBrush x:Key="MahApps.Brushes.Gray2" Color="Black"/>
您可以在应用程序资源字典中覆盖此笔刷。但是,这不仅会影响 Expander
控件,还会影响使用此画笔的 所有 控件。如果您在 Expander
资源中重新定义画笔,它将同样适用于其所有子项。
我的 WPF 使用的是 MahApps metro 框架。如下图 2 所示,将鼠标悬停在应用程序的任何 Expander
控件的 header 上会使 header 的 ToggleButton
几乎不可见。
问题:如何让这个切换按钮更加突出?
XAML:
<!-- ... -->
<Expander Header="Test expander" Width="145" Padding="0">
<StackPanel>
<Button Content="Button 1" Foreground="White"/>
<Button Content="Button 2" Foreground="White"/>
</StackPanel>
</Expander>
<!-- ... -->
鼠标悬停在 Header:
上时显示上述扩展器鼠标悬停在 Header:
上时显示上述扩展器如你所见,左边的ToggleButton
几乎看不见。
Expander
控件有 4 种不同的样式,分别用于上、下、左和右方向。它们都使用 triggers in the repective control templates.
<ControlTemplate.Triggers>
<!-- ... -->
<Trigger Property="IsMouseOver" Value="true">
<Setter TargetName="Arrow" Property="Stroke" Value="{DynamicResource MahApps.Brushes.Gray2}" />
<Setter TargetName="Circle" Property="Stroke" Value="{DynamicResource MahApps.Brushes.Gray2}" />
</Trigger>
<!-- ... -->
</ControlTemplate.Triggers>
如您所见,setter 直接使用 DynamicResource
分配 MahApps.Brushes.Gray2
。它们未绑定到任何 属性 或以样式设置,因此几乎没有选项可以更改它,例如:
通过复制默认样式并调整 鼠标悬停 为
MahApps.Styles.ToggleButton.ExpanderHeader.Down
(以及任何面向不同的Expander
创建自定义样式触发器。用不同的笔刷覆盖
MahApps.Brushes.Gray2
或创建自定义主题。<SolidColorBrush x:Key="MahApps.Brushes.Gray2" Color="Black"/>
您可以在应用程序资源字典中覆盖此笔刷。但是,这不仅会影响
Expander
控件,还会影响使用此画笔的 所有 控件。如果您在Expander
资源中重新定义画笔,它将同样适用于其所有子项。