Como herdar/estender estilos de um dicionário de recursos?
-
26-09-2019 - |
Pergunta
Estou tendo problemas para estender um dos meus estilos que defini no dicionário do Windows. Sozinho, parece aplicar o estilo aos meus controles conforme o esperado. No entanto, se tentar estender o estilo em um dos meus userControls, usando a propriedade Basedon, ele simplesmente substitui o principal e todos os estilos de base desaparecem. Aqui está um exemplo:
Em um dicionário de recursos, chamado dict1.xaml:
<Style TargetType="{x:Type Button}">
<Setter Property="Background" Value="Pink"/>
</Style>
Na janela principal.xaml:
<Window.Resources>
<ResourceDictionary Source="dict1.xaml"/>
</Window.Resources>
Em um controle de usuário chamado UserControl1.xaml:
<UserControl.Resources>
<Style BasedOn="{StaticResource {x:Type Button}}"
TargetType="{x:Type Button}">
<Setter Property="FontWeight" Value="Bold"/>
</Style>
</UserControl.Resources>
O estilo no controle do usuário simplesmente substitui o do dicionário de recursos e a fonte é em negrito. Se eu remover o estilo no controle do usuário, o estilo no dicionário entra em ação e o fundo se tornará rosa. Eu quero Ambos.
Alguma idéia do que estou fazendo de errado aqui?
obrigado.
Solução
Você precisa adicionar o dicionário aos recursos do UserControl ou adicioná -lo aos recursos app.xaml.
Como é, o UserControl não pode resolver esse staticResource - está no escopo do UserControl, não na janela, se isso faz sentido.