2009-04-01 14 views
62

Ich habe ein paar WPF-Anwendungen und ich möchte alle meine Stile in einer gemeinsamen Assembly sein, anstatt sie in jeder Anwendung separat zu deklarieren.Laden Sie WPF-Stile oder andere statische Ressourcen aus einer externen Datei oder Baugruppe

Ich bin auf der Suche nach einem Weg, so dass ich nicht alle meine Style="{StaticResource BlahBlah}" in den bestehenden Anwendungen ändern muss; Ich möchte nur den Verweis auf diese Stil-Assembly hinzufügen und ihn aus der aktuellen Anwendung löschen, sodass er aus der Assembly stammt.

Gibt es einen Weg?

Antwort

108

Referenzierung eine externe Resource (XAML-Datei):

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

Referenzierung eine externe Resource (DLL):

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

Aber würden Sie bitte sagen, wie wir einen Stil überschreiben können, die in den Ressourcen vorhanden XAML-Datei in anderen Assembly? Zum Beispiel: Ein Stil, der Foreground-Eigenschaften hat und ein Standard-Stil ist (der kein x: Key hat). Dann möchte ich nur die Hintergrundeigenschaft ändern. Also habe ich BaseOn benutzt, aber es funktioniert nicht. :( –

+3

@amkh, sobald dieser Stil in den Geltungsbereich importiert wird, können Sie ihn neu deklarieren und überschreiben, indem Sie einen neuen Stil auf einer hohen Bereichsebene erstellen, indem Sie 'BasedOn' auf' {StaticResource {x: Type TextBox}} 'setzen (TextBox wird ersetzt) – Shimmy

+0

Vielen Dank Mein Fehler war, dass ich den Style an einem falschen Ort erstellte, während ich BasedOn verwendete –