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 !!

È stato utile?

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

.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top