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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top