E 'possibile condividere un file ResourceDictionary tra più progetti?
-
09-09-2019 - |
Domanda
Se ho un ResourceDictionary in un progetto, è possibile creare un altro progetto che utilizza le risorse definite nel primo progetto? Si noti che entrambi i progetti sono applicazioni WPF, non ControlLibraries.
Grazie !!
Soluzione
Sì, certo che è possibile, a patto che Progetto B ha un riferimento per proiettare.
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Project A;component/YourSubFolder/YourResourceFile.xaml" />
</ResourceDictionary.MergedDictionaries>
Poi si può solo utilizzare le risorse definite nel YourResourceFile.xaml.
Altri suggerimenti
ho scoperto che ho dovuto fare riferimento alla stessa assemblea e non utilizzare un nome di progetto. Anche io non ho bisogno di usare il pacchetto:. /// sintassi per arrivare a questo lavoro
Questa risposta sulla questione duplicato specifica il formato da utilizzare (posso verificare che questa sintassi funziona in .NET 4.0): https://stackoverflow.com/a/10216253/1260563
In particolare (da quando mi dimentico sempre la componente pensando che è una cartella qualcuno sta usando):
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/<YourAssemblyName>;component/<YourReferencedFileHere.xaml>" />
</ResourceDictionary.MergedDictionaries>
Quindi, se si dispone di un assembly Abc.Def.dll e un file in quella DLL chiamato Xyz.xaml al livello principale si usa:
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Abc.Def;component/Xyz.xaml" />
</ResourceDictionary.MergedDictionaries>
Nota: ReSharper 7 sottolineato che ho dovuto fare riferimento alla stessa assemblea
.