Наследовать стиль от Mahapps для пользовательского заголовка GroupBox в WPF - PullRequest
0 голосов
/ 21 января 2019

Мне нужен собственный заголовок для моего элемента GroupBox. Теперь проблема в том, что когда я переключаю стиль в своем приложении, объект метки 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>

Любая помощь приветствуется! Спасибо!

1 Ответ

0 голосов
/ 21 января 2019

Вы можете либо попробовать 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>
...