Wie referenziere ich in WPF eine statische Ressource, die in einer anderen XAML-Datei definiert ist? Es ist im selben Projekt.In WPF wie referenziere ich eine statische Ressource, die in einer anderen XAML-Datei definiert ist?
Q
In WPF wie referenziere ich eine statische Ressource, die in einer anderen XAML-Datei definiert ist?
7
A
Antwort
8
Die andere XAML-Datei muss ein Ressourcenwörterbuch sein. Sie führen es in der aktuellen Datei unter Verwendung der MergedDictionaries-Eigenschaft des aktuellen ResourceDictionary zusammen. Siehe Merged Resource Dictionaries auf MSDN. Ihr Beispiel:
<Page.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="myresourcedictionary.xaml"/>
<ResourceDictionary Source="myresourcedictionary2.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Page.Resources>
dann innerhalb dieser Page-Objekt können Sie statische Ressourcen in myresourcedictionary.xaml
oder in myresourcedictionary2.xaml
definiert verweisen.
3
„verschiedene XAML-Datei“ könnte ein paar verschiedene Dinge bedeuten:
- App.xaml: Die Ressourcen werden im Ressourcenbaum nichts automatisch enthalten, die geöffnet wird, so brauchen Sie nichts extra zu tun.
- Window oder Page .xaml: Auf Ressourcen kann von jedem Kind einer Instanz des Objekts wie einem UserControl, das in einem Fenster verwendet wird, zugegriffen werden.
- ResourceDictionary: Muss explizit in den Ressourcenbaum oberhalb der Stelle eingefügt werden, an der es verwendet wird. Dies kann App.xaml, Windowxx.xaml oder ein untergeordnetes Element sein. Verwenden Sie dazu ResourceDictionary.MergedDictionaries.
Darüber hinaus gibt es viele alternative Möglichkeiten, um den Weg zu geben, aber das ist die einfachste:
<Window>
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Resources/MyResourceDict.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>