В моем словарном файле у меня естьWPF стиль переопределения в объединенном словаре
<Style TargetType="{x:Type Label}" BasedOn="{StaticResource {x:Type Label}}">
<Setter Property="Foreground" Value="White" />
<Setter Property="Background" Value="Black" />
</Style>
В моем файле XAML окна У меня есть
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/XXX;component/XXX.xaml"/>
</ResourceDictionary.MergedDictionaries>
<Style TargetType="Label" BasedOn="{StaticResource {x:Type Label}}">
<Setter Property="FontSize" Value="20"/>
<Setter Property="VerticalAlignment" Value="Center"/>
</Style>
</ResourceDictionary>
</Window.Resources>
В конструкторе можно увидеть на этикетке имеет черный фон и белый передний план но во время выполнения он имеет черный черный фон по умолчанию и прозрачный фон. Очень очевидно, что я хочу наследовать стиль словаря, и он не работает. Что я там делал? Я использую VS 2013 и .NET 4.5
Редактировать: Если я удалю стиль внутри Windows.Resources, тогда будет применен стиль словаря. Если переместить стиль из ресурсов Windows на StackPanel.Resource, который содержит некоторые метки, то наследование работает отлично
Ну, словарь - это словарь глобального стиля. Который я стараюсь избегать делать style = {...} или создавать другой стиль в словаре, если я не хочу переопределять что-либо. – Steve
Вот для чего нужен фиктивный стиль. Вы помещаете именованный стиль и фиктивный стиль в глобальный словарь. Эффект такой же, как наличие одного стиля без ключа, но его разделение позволяет также явно ссылаться на стиль. Что может быть полезно для решения этой проблемы с объединенным словарем. –
кажется рабочим решением. Есть ли еще идеи о фактическом поведении, которое вызвало это? Я всегда хочу узнать причину, по которой вместо того, чтобы знать, что существует работа – Steve