2009-04-01 14 views
62

Ho alcune applicazioni WPF e voglio che tutti i miei stili siano in un assembly condiviso invece di dichiararli separatamente in ciascuna applicazione.Carica gli stili WPF o altre risorse statiche da un file o un assieme esterno

Sto cercando un modo per cui non devo modificare tutto il mio Style="{StaticResource BlahBlah}" nelle applicazioni esistenti; Voglio solo aggiungere il riferimento a questo assembly di stile ed eliminarlo dall'applicazione corrente, quindi è preso dall'assemblaggio.

C'è qualche modo?

risposta

108

riferimento a un ResourceDictionary esterna (XAML file):

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

riferimento a un ResourceDictionary esterno (DLL):

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

Ma per favore, dire come possiamo ignorare uno stile che esiste in Risorse file xaml in altri assembly? Ad esempio: uno stile con la proprietà Foreground impostata ed è uno stile predefinito (che non ha x: Key). Quindi voglio solo modificare la proprietà Background. Quindi ho usato BaseOn, ma non funziona. :( –

+3

@amkh, una volta che lo stile è importato nell'oscilloscopio, puoi quindi ridistribuirlo e sovrascriverlo creando un nuovo stile ad un livello elevato di scope impostando 'BasedOn' su' {StaticResource {x: Type TextBox}} '(sostituendo TextBox con il tipo appropriato – Shimmy

+0

Grazie mille. Il mio errore è stato che stavo creando lo stile in una posizione errata mentre stavo usando BasedOn. –

Problemi correlati