2009-04-01 5 views
62

Tengo algunas aplicaciones WPF y deseo que todos mis estilos estén en un ensamblado compartido en lugar de declararlos en cada aplicación por separado.Cargue estilos WPF u otros recursos estáticos de un archivo o ensamblaje externo

Estoy buscando una manera para que no tenga que cambiar todas mis Style="{StaticResource BlahBlah}" en las aplicaciones existentes; Solo quiero agregar la referencia a este ensamblaje de estilo y eliminarlo de la aplicación actual, por lo que se toma del ensamblaje.

¿Hay alguna manera?

Respuesta

108

Referencia a una ResourceDictionary externa (XAML del archivo):

<Application.Resources> 
    <ResourceDictionary Source="MyResources.xaml" /> 
</Application.Resources> 

Referencia a una ResourceDictionary externa (DLL):

<Application.Resources> 
    <ResourceDictionary Source="/MyExternalAssembly;component/MyResources.xaml" /> 
</Application.Resources> 
+0

Pero ¿podría decir cómo podemos anular un estilo que existe en los Recursos archivo xaml en otro ensamblaje? Por ejemplo: un estilo que tiene la propiedad de primer plano establecida y es un estilo predeterminado (que no tiene ninguna clave x:). Entonces solo quiero cambiar la propiedad de fondo. Así que usé BaseOn, pero no funciona. :( –

+3

@amkh, una vez que se importa el estilo en el alcance, puede redeclararlo y anularlo creando un nuevo estilo en un nivel de alto nivel estableciendo 'BasedOn' en' {StaticResource {x: Type TextBox}} '(reemplazando TextBox con el tipo apropiado. – Shimmy

+0

Muchas gracias. Mi error fue que estaba creando el estilo en una ubicación incorrecta mientras usaba BasedOn. –

Cuestiones relacionadas