Я создаю несколько страниц WPF в приложении для создания форм.Я хочу использовать WPF Themes для моего приложения.Не имея App.xaml
(потому что проект является проектом выигрышных форм с WPF ElementHost
для отображения форм WPF), я добавил свой словарь ресурсов темы в свою форму следующим образом:
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Themes/ExpressionDark.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
Это работаетдля всех элементов управления в этой форме, а также некоторых других пользовательских элементов управления WPF, но есть некоторые пользовательские элементы управления, в которых тема не работает.Я обнаружил, что затронутые элементы управления, которые определяют свои собственные ресурсы, например, так:
<Grid.Resources>
<Style TargetType="ComboBox">
<Setter Property="Margin" Value="0 2 5 2" />
</Style>
</Grid.Resources>
Кажется, не имеет значения, где находятся ресурсы или что находится в ресурсе.Все, что не указано в ресурсе, блокирует тему для всего, что предназначено для стиля.Я даже попытался перехитрить его, найдя ресурс в словаре:
<Style TargetType="{x:Type ComboBox}">
<Setter Property="Foreground" Value="{DynamicResource TextBrush}" />
<Setter Property="SnapsToDevicePixels" Value="true" />
<Setter Property="Template" Value="{DynamicResource ComboBoxTemplate}" />
</Style>
И изменив мой стиль, чтобы он выглядел так:
<Grid.Resources>
<Style TargetType="ComboBox">
<Setter Property="Foreground" Value="{DynamicResource TextBrush}" />
<Setter Property="SnapsToDevicePixels" Value="true" />
<Setter Property="Template" Value="{DynamicResource ComboBoxTemplate}" />
<Setter Property="Margin" Value="0 2 5 2" />
</Style>
</Grid.Resources>
Но это вызвало мои поля со спискомисчезнуть полностью!
Есть ли способ добавить ресурсы, которые ограничивают целевые элементы управления, а не выбрасывают тему?