2009-06-03 9 views

Antwort

28

Ja, natürlich, das möglich ist, solange Projekt B eine Referenz A. Sie

<ResourceDictionary.MergedDictionaries> 
    <ResourceDictionary Source="/Project A;component/YourSubFolder/YourResourceFile.xaml" /> 
</ResourceDictionary.MergedDictionaries> 

Dann einfach die Ressourcen in YourResourceFile.xaml definiert verwenden können, um Projekt.

+0

Oh snap. Ich versuche es! Vielen Dank!! – Pwninstein

+0

Ich wusste das nicht - cooler Trick! –

+0

Was passiert, wenn die Projekte keine Referenz teilen? In meinem Fall verwende ich PRISM und deklariere Styles in der Shell. Ich möchte einige der definierten Farben wiederverwenden können. – R4cOON

10

Ich stellte fest, dass ich die Assembly selbst referenzieren und keinen Projektnamen verwenden musste. Ich musste auch nicht die Pack: /// Syntax verwenden, um dies zum Laufen zu bringen.

Diese Antwort auf die doppelte Frage des Formats (I überprüfen können, dass diese Syntax .NET 4.0 arbeitet in) zu verwenden gibt: https://stackoverflow.com/a/10216253/1260563

Insbesondere (da ich das Bauteil immer vergessen, dachte, es ein Ordner jemand verwendet): So

<ResourceDictionary.MergedDictionaries> 
    <ResourceDictionary Source="/<YourAssemblyName>;component/<YourReferencedFileHere.xaml>" /> 
</ResourceDictionary.MergedDictionaries> 

wenn Sie eine Baugruppe Abc.Def.dll und eine Datei in diesem DLL namens Xyz.xaml auf root-Ebene haben, die Sie verwenden:

<ResourceDictionary.MergedDictionaries> 
    <ResourceDictionary Source="/Abc.Def;component/Xyz.xaml" /> 
</ResourceDictionary.MergedDictionaries> 

Hinweis: Resharper 7 wies darauf hin, dass ich die Baugruppe selbst referenzieren musste.

+0

Vielen Dank für die Angabe konkreter Beispiele und Hinweise auf die Notwendigkeit des Bestandteils des Pfades. Das half mehr als das halbe Dutzend anderer Lösungen, über die ich gestolpert bin. –

Verwandte Themen