2009-06-03 12 views

Odpowiedz

28

Tak, oczywiście, że to możliwe, o ile Projekt B ma odniesienie do projektu A.

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

Następnie można po prostu wykorzystać środki określone w YourResourceFile.xaml.

+0

Och snap. Próbuję! Dzięki!! – Pwninstein

+0

Nie wiedziałem tego - fajna sztuczka! –

+0

Co się stanie, jeśli projekty nie będą miały odniesienia? W moim przypadku używam PRISM i deklaruję style w Shell. Chciałbym móc ponownie użyć niektórych zdefiniowanych kolorów. – R4cOON

10

Stwierdziłem, że muszę odwołać się do samego zespołu i nie używać nazwy projektu. Nie musiałem również używać składni pack: ///, aby to działało.

To odpowiedź na pytanie duplikatu określa format użyć (mogę zweryfikować, że ta składnia działa w .NET 4.0): https://stackoverflow.com/a/10216253/1260563

Konkretnie (ponieważ ja zawsze zapomnieć o części składowej myśląc, że ktoś jest folder korzysta):

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

Więc jeśli masz zespół Abc.Def.dll oraz plik DLL w tej nazwie Xyz.xaml na poziomie głównym użyłbyś:

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

Uwaga: Resharper 7 zwrócił uwagę, że muszę odwołać się do samego zespołu.

+0

Dziękuję za podanie konkretnych przykładów i wskazanie potrzeby części składowej ścieżki. To pomogło ponad pół tuzina innych rozwiązań, na które natknąłem się. –

Powiązane problemy