c# - 从 Mahapps 继承样式以在 WPF 中自定义 GroupBox Header

标签 c# wpf mahapps.metro

我的 GroupBox 元素需要一个自定义 header 。现在的问题是,当我在我的应用程序中切换样式时, header 中 CheckBox 的标签对象不会根据新的主题样式更改前景。

如何继承当前主题的样式?

我尝试从 StaticRessource LabelTextBrush 继承样式,但标签始终保持黑色。也许这是错误的资源?

<GroupBox x:Name="gpDetailView" Grid.Column="1" Margin="5" Grid.Row="3" Grid.ColumnSpan="2">
    <GroupBox.Header>
        <DockPanel>
            <CheckBox x:Name="ckbState" Content="Ersatzteil aktiv" Foreground="{DynamicResource LabelTextBrush}">
                <CheckBox.Resources>
                    <Style TargetType="{x:Type CheckBox}" BasedOn="{StaticResource {x:Type CheckBox}}">
                        <Setter Property="Foreground" Value="{DynamicResource LabelTextBrush}"/>
                    </Style>
                </CheckBox.Resources>
            </CheckBox>
        </DockPanel>
    </GroupBox.Header>
    <Grid>


    </Grid>
</GroupBox>

感谢任何帮助!谢谢!

最佳答案

您可以尝试使用 IdealForegroundColorBrush 或依靠 BackgroundToForegroundConverter 来获得“理想的”前景画笔:

<CheckBox x:Name="ckbState" Content="Ersatzteil aktiv"
          xmlns:Controls="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro"
          xmlns:Converters="clr-namespace:MahApps.Metro.Converters;assembly=MahApps.Metro">
    <CheckBox.Foreground>
        <MultiBinding Converter="{x:Static Converters:BackgroundToForegroundConverter.Instance}">
            <Binding Mode="OneWay" Path="Background" RelativeSource="{RelativeSource AncestorType=GroupBox}" />
            <Binding Mode="OneWay" Path="(Controls:GroupBoxHelper.HeaderForeground)" RelativeSource="{RelativeSource AncestorType=GroupBox}" />
        </MultiBinding>
    </CheckBox.Foreground>
</CheckBox>

关于c# - 从 Mahapps 继承样式以在 WPF 中自定义 GroupBox Header,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54283842/

相关文章:

c# - 如何模拟 xmlSerializer

c# - 如何在 C# 中将 cookie 过期时间设置为 "session"?

wpf - Touch 和 Stylus WPF 有什么区别

C# - 从 WPF DataGrid 填充文本框

c# - 定期打印形状

c# - 带有关闭按钮的自定义对话框 Mahapps ShowMetroDialogAsync

c# - 应用 MahApps.Metro Dark 主题

c# - 无法使用内容同步操作 (syncrepl) 从 OpenLDAP 服务器获取已删除的项目

c# - 打开一个 WPF 窗口应用程序窗体 VS 扩展命令

c# - 静态资源无法解析