Not sure if I follow this question right, So you want to have your ComboBox
use the Dark theme when it's parent control's are using the Light theme?
If so it's pretty simple. In the scope of the control within it's resources add the DarkTheme resource.
So say we got
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
...
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/BaseLight.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
Now pretty much everything in your App would be using the light theme. However if we have a ComboBox
defined such as:
<ListBox>
<!-- This is just for an example so you would ofc have this defined in the ItemTemplate normally -->
<ListBoxItem>
<ComboBox>
<ComboBox.Resources>
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/BaseDark.xaml" />
</ComboBox.Resources>
<ComboBoxItem Content="A" />
<ComboBoxItem Content="A" />
<ComboBoxItem Content="A" />
</ComboBox>
</ListBoxItem>
<ListBoxItem Content="A" />
<ListBoxItem Content="A" />
</ListBox>
Now we add the BaseDark.xaml
resource in the scope for the ComboBox
which should just make it get the Dark Theme applied to it.
The reason this works is just due to some Brush
magic :) Control's are all Styled using Brushes they query and find. Now the Resource with the highest scope priority takes precedence when multiple Brushes have the same name.
So in essence BaseLight.xaml and BaseDark.xaml both define the same Brushes with different colors.
With this based on which resource applies to the control ends up defining which theme that control or it's children get's.