WPF: odpowiednik zasobów aplikacji w bibliotece DLL


W swoim rozwiązaniu mam dwa projekty. Pierwszy projekt

to jest

Aplikacja WPF, druga jest normalna


Projekt DLL. Wewnątrz projektu DLL mam kilka niestandardowych kontrolek WPF. Chcę, aby te kontrolki współdzieliły niektóre zasoby i definiowały je w bibliotece DLL.
Wiem, że w normalnej aplikacji WPF możesz określić zasoby aplikacji w App.xaml. Czy istnieje odpowiednik w projekcie DLL?
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Tak, możesz utworzyć zasób XAML w bibliotece DLL w ten sposób (upewnij się, że masz wszystkie zestawy WPF, do których odwołuje się biblioteka DLL):
<!-- name of the dictionary is MyResources in MyDLL namespace -->
<ResourceDictionary x:Class="MyDLL.MyResources"
xmlns="[url=http://schemas.microsoft.com/winfx/2006/xaml/presentation"]http://schemas.microsoft.com/w ... ot%3B[/url]
xmlns:x="[url=http://schemas.microsoft.com/winfx/2006/xaml">]http://schemas.microsoft.com/w ... gt%3B[/url] <ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="./Controls/ButtonStyles.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>

i dodaj to do zasobów klasy aplikacji w projekcie WPF:
public App()
{
MyDLL.MyResources externalRes = new MyDLL.MyResources(); this.Resources.Add("MyExternalResources", externalRes);
}
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Nie, nie ma odpowiednika dll, ponieważ ładowanie zasobów nie jest częścią zestawu (exe), ale częścią aplikacji. Aby pobrać zasoby, musisz pobrać aplikację Aplikacja jest głównym elementem aplikacji, a nie zestawem exe. Aby uzyskać odpowiednik dla formantów w bibliotece dll, możesz utworzyć oddzielną ResourceDictionary i dodać ją do każdej kontrolki XAML, łącząc ją z zasobami UserControl przy użyciu ResourceDictionary.MergedDictionaries.

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się