У меня возникли проблемы с расширением одного из моих стилей, которые я определил в словаре Windows. В одиночку, похоже, этот стиль применяется к моим элементам управления, как ожидалось. Однако, если попытаться расширить стиль в одном из моих userControls, используя свойство basedOn, он просто переопределяет основной, и все базовые стили исчезают. Вот пример:Как наследовать/расширять стили из ресурсного словаря?
В словаре ресурсов, названный dict1.xaml:
<Style TargetType="{x:Type Button}">
<Setter Property="Background" Value="Pink"/>
</Style>
В главном window.xaml:
<Window.Resources>
<ResourceDictionary Source="dict1.xaml"/>
</Window.Resources>
В пользовательский элемент управления под названием userControl1.xaml:
<UserControl.Resources>
<Style BasedOn="{StaticResource {x:Type Button}}"
TargetType="{x:Type Button}">
<Setter Property="FontWeight" Value="Bold"/>
</Style>
</UserControl.Resources>
Стиль в пользовательском элементе управления просто переопределяет значение в словаре ресурсов, а шрифт - Bo смертельная доза Если я удалю стиль в пользовательском элементе управления, стиль словаря начнется, и фон станет розовым. Я хочу оба.
Любые идеи, что я делаю неправильно здесь?
спасибо.
Да, это имеет смысл. Когда вы говорите, добавьте его в app.xaml, что он достигнет? Не добавляет ли он в Windows.Resources то же самое? BTW, файл app.xaml не используется в моей настройке, потому что форма окна открывается из приложения winforms, но это еще одна проблема. – HAdes
@HAdes Добавление его в App.XAML делает его доступным во всем приложении, поэтому вы можете ссылаться на его ресурсы из любого места. – Jay
Итак, кажется, что то, что я за ним, невозможно, и единственный способ сделать это, как вы предлагаете, и скопировать стиль в пользовательский элемент управления. Мне это не нравится, потому что он дублирует стили без необходимости и означает любые изменения стиля, которые нужно выполнять в обоих. Но я предполагаю, что это работает пока. веселит. – HAdes