Estilizando um UserControl no WPF de outra assembléia
-
20-09-2019 - |
Pergunta
Eu tenho um controle de usuário do WPF definido em um conjunto de aplicativos. Estou tentando estilizar o controle do usuário com base em estilos em outra montagem (pele ou tema). Não quero o conjunto do tema/pele que contém o recurso com todos os estilos para fazer referência ao conjunto do aplicativo. Existe alguma maneira de fazer isso? Por exemplo
Assembléia de WPFApplication
MyuserControl.xaml <- controle do usuário do WPF
Assembléia de temas
Mystyles.xaml <- dicionário de recursos wpf
Presumo que posso usar
<Style x:Key="MyStyle">
<Setter Property="Background" Value="Red" />
</Style>
no mystyles.xaml Recursos e use:
<l:MyUserControl Name="control" Style="{StaticResource MyStyle}" />
Em qualquer janela que use myuserControl.xaml no conjunto WPFAPplication
No entanto, eu preferiria direcionar o controle de usuário personalizado no mystyles.xaml ResourceStionary:
<Style TargetType="{x:Type l:MyUserControl}" x:Key="MyStyle">
<Setter Property="Background" Value="Red" />
</Style>
Isso é possível??
Solução
Sim, você pode fazer isso. Verifique isso então post onde eu mostro como fazer isso programaticamente. Eu estava fazendo isso com o ControlTemplates, mas exatamente o mesmo se aplica aos estilos.
Para fazer isso declaradamente, pode ser mais simples, pode ser necessário mesclar programaticamente seus recursos, declarar os recursos de statics e nomes corretos em seu XAML e, em seguida, basta fazer referência ao estilo/modelo que você deseja.