El estilo de un control de usuario en WPF de otro conjunto
-
20-09-2019 - |
Pregunta
Tengo un control de usuario WPF definido en un conjunto de aplicación. Estoy tratando de peinar el control de usuario basada en los estilos en otro montaje (piel o el tema). No quiero que el conjunto temático / piel que contiene el ResourceDictionary con todos los estilos para hacer referencia al conjunto de aplicación. ¿Hay alguna manera de hacer esto? Por ejemplo.
Asamblea WPFApplication
MyUserControl.xaml <- control de usuario WPF
Asamblea Tema
MyStyles.xaml <- diccionario de recursos WPF
Asumo que puedo utilizar
<Style x:Key="MyStyle">
<Setter Property="Background" Value="Red" />
</Style>
en la ResourceDictionary MyStyles.xaml, y uso:
<l:MyUserControl Name="control" Style="{StaticResource MyStyle}" />
en cualquier ventana que utiliza MyUserControl.xaml en el montaje WPFApplication
Sin embargo, yo preferiría para apuntar el control de usuario personalizado en el ResourceDictionary MyStyles.xaml:
<Style TargetType="{x:Type l:MyUserControl}" x:Key="MyStyle">
<Setter Property="Background" Value="Red" />
</Style>
¿Es esto posible ??
Solución
Sí, puede hacerlo. Marque esta SO enviar donde muestro cómo hacerlo mediante programación. Lo hacía con ControlTemplates, pero exactamente lo mismo se aplica a los estilos también.
Para hacerlo de forma declarativa puede ser más simple, puede que tenga que fusionar sus resourcedictionaries mediante programación, declarar las StaticResources adecuadas y espacios de nombres en su xaml, y luego simplemente hacer referencia al estilo / plantilla que desee.