Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Eine Ressource ist ein Objekt, das an verschiedenen Stellen in Ihrer App wiederverwendet werden kann. Beispiele für Ressourcen sind Pinsel und Stile. In dieser Übersicht wird beschrieben, wie Ressourcen in Extensible Application Markup Language (XAML) verwendet werden. Sie können ressourcen auch mithilfe von Code erstellen und auf sie zugreifen.
Hinweis
In diesem Artikel beschriebene XAML-Ressourcen unterscheiden sich von App-Ressourcen, die in der Regel Dateien sind, die einer App hinzugefügt werden, z. B. Inhalte, Daten oder eingebettete Dateien.
Verwenden von Ressourcen in XAML
Im folgenden Beispiel wird eine SolidColorBrush Ressource im Stammelement einer Seite definiert. Anschließend verweist das Beispiel auf die Ressource und verwendet sie zum Festlegen von Eigenschaften mehrerer untergeordneter Elemente, einschließlich eines Ellipse, eines TextBlockund eines Button.
<Window x:Class="resources.ResExample"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="ResExample" Height="400" Width="300">
<Window.Resources>
<SolidColorBrush x:Key="MyBrush" Color="#05E0E9"/>
<Style TargetType="Border">
<Setter Property="Background" Value="#4E1A3D" />
<Setter Property="BorderThickness" Value="5" />
<Setter Property="BorderBrush">
<Setter.Value>
<LinearGradientBrush>
<GradientStop Offset="0.0" Color="#4E1A3D"/>
<GradientStop Offset="1.0" Color="Salmon"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Style>
<Style TargetType="TextBlock" x:Key="TitleText">
<Setter Property="FontSize" Value="18"/>
<Setter Property="Foreground" Value="#4E87D4"/>
<Setter Property="FontFamily" Value="Trebuchet MS"/>
<Setter Property="Margin" Value="0,10,10,10"/>
</Style>
<Style TargetType="TextBlock" x:Key="Label">
<Setter Property="HorizontalAlignment" Value="Right"/>
<Setter Property="FontSize" Value="13"/>
<Setter Property="Foreground" Value="{StaticResource MyBrush}"/>
<Setter Property="FontFamily" Value="Arial"/>
<Setter Property="FontWeight" Value="Bold"/>
<Setter Property="Margin" Value="0,3,10,0"/>
</Style>
</Window.Resources>
<Border>
<StackPanel>
<TextBlock Style="{StaticResource TitleText}">Title</TextBlock>
<TextBlock Style="{StaticResource Label}">Label</TextBlock>
<TextBlock HorizontalAlignment="Right" FontSize="36" Foreground="{StaticResource MyBrush}" Text="Text" Margin="20" />
<Button HorizontalAlignment="Left" Height="30" Background="{StaticResource MyBrush}" Margin="40">Button</Button>
<Ellipse HorizontalAlignment="Center" Width="100" Height="100" Fill="{StaticResource MyBrush}" Margin="10" />
</StackPanel>
</Border>
</Window>
Jedes Element auf Frameworkebene (FrameworkElement oder FrameworkContentElement) verfügt über eine Resources Eigenschaft, bei der es sich um einen ResourceDictionary Typ handelt, der definierte Ressourcen enthält. Sie können Ressourcen für jedes Element definieren, z. B. ein Button. Ressourcen werden jedoch am häufigsten für das Stammelement definiert, das sich im Beispiel befindet Window .
Jede Ressource in einem Ressourcenverzeichnis muss über einen eindeutigen Schlüssel verfügen. Wenn Sie Ressourcen im Markup definieren, weisen Sie den eindeutigen Schlüssel über die x:Key-Direktive zu. In der Regel ist der Schlüssel eine Zeichenfolge; Sie können sie jedoch auch auf andere Objekttypen festlegen, indem Sie die entsprechenden Markuperweiterungen verwenden. Nicht-Zeichenfolgenschlüssel für Ressourcen werden von bestimmten Featurebereichen in WPF verwendet, insbesondere für Stile, Komponentenressourcen und Datenformatierung.
Sie können eine definierte Ressource mit der Syntax der Ressourcenmarkuperweiterung verwenden, die den Schlüsselnamen der Ressource angibt. Verwenden Sie beispielsweise die Ressource als Wert einer Eigenschaft für ein anderes Element.
<Button Background="{StaticResource MyBrush}"/>
<Ellipse Fill="{StaticResource MyBrush}"/>
Wenn das XAML-Ladeprogramm im vorherigen Beispiel den Wert {StaticResource MyBrush}
für die Background Eigenschaft Buttonverarbeitet, überprüft die Ressourcensuchlogik zuerst das Ressourcenwörterbuch für das Button
Element. Wenn Button
keine Definition für den Ressourcenschlüssel MyBrush
hat (was in diesem Beispiel nicht zutrifft; seine Ressourcensammlung ist leer), wird das übergeordnete Element von Button
überprüft. Wenn die Ressource nicht im übergeordneten Element definiert ist, überprüft das System weiterhin den logischen Baum des Objekts nach oben, bis es gefunden wird.
Wenn Sie Ressourcen für das Stammelement definieren, können alle Elemente in der logischen Struktur, z. B. die Window oder Page, darauf zugreifen. Außerdem können Sie dieselbe Ressource wiederverwenden, um den Wert einer beliebigen Eigenschaft festzulegen, die denselben Typ akzeptiert, den die Ressource darstellt. Im vorherigen Beispiel legt dieselbe MyBrush
Ressource zwei verschiedene Eigenschaften fest: Button.Background und Ellipse.Fill.
Statische und dynamische Ressourcen
Auf eine Ressource kann entweder als statisch oder dynamisch verwiesen werden. Verweise werden mithilfe der StaticResource-Markuperweiterung oder der DynamicResource-Markuperweiterung erstellt. Eine Markuperweiterung ist ein XAML-Feature, mit dem Sie einen Objektverweis angeben können, indem Sie die Attributerweiterungszeichenfolge verarbeiten und das Objekt an ein XAML-Ladeprogramm zurückgeben. Weitere Informationen zum Markuperweiterungsverhalten finden Sie unter Markuperweiterungen und WPF-XAML.
Wenn Sie eine Markuperweiterung verwenden, stellen Sie in der Regel einen oder mehrere Parameter in Zeichenfolgenform bereit, die von dieser bestimmten Markuperweiterung verarbeitet werden. Die StaticResource-Markuperweiterung verarbeitet einen Schlüssel, indem sie den Wert zu diesem Schlüssel in allen verfügbaren Ressourcenwörterbüchern nachschlägt. Die Verarbeitung erfolgt während des Ladens, wenn der Ladevorgang den Eigenschaftswert zuweisen muss. Die DynamicResource-Markuperweiterung verarbeitet stattdessen einen Schlüssel, indem ein Ausdruck erstellt wird, und dieser Ausdruck bleibt unausgewertet bis zur Ausführung der App, wenn der Ausdruck ausgewertet wird, um einen Wert bereitzustellen.
Wenn Sie auf eine Ressource verweisen, können die folgenden Überlegungen beeinflussen, ob Sie einen statischen Ressourcenverweis oder einen dynamischen Ressourcenverweis verwenden:
Berücksichtigen Sie bei der Ermittlung des Gesamtdesigns, wie Sie die Ressourcen für Ihre App erstellen, z.B. pro Seite, in der App, in losem XAML oder in einer nur Ressourcenassembly, folgende Aspekte:
Die Funktionalität der App. Sind Aktualisierungen von Ressourcen in Echtzeit Teil Ihrer App-Anforderungen?
Das entsprechende Nachschlageverhalten dieses Ressourcenverweistyps.
Die spezifische Eigenschaft oder der Ressourcentyp und das native Verhalten dieser Typen.
Statische Ressourcen
Statische Ressourcenverweise funktionieren am besten für die folgenden Umstände:
Ihr App-Design konzentriert die meisten Ressourcen auf Ressourcenwörterbücher auf Seiten- oder Anwendungsebene.
Statische Ressourcenverweise werden nicht basierend auf Laufzeitverhalten neu ausgewertet, z. B. das Neuladen einer Seite. Es kann also ein Leistungsvorteil geben, um eine große Anzahl dynamischer Ressourcenverweise zu vermeiden, wenn sie nicht basierend auf Ihrem Ressourcen- und App-Design erforderlich sind.
Sie legen den Wert einer Eigenschaft fest, die sich nicht auf einer DependencyObject oder einer FreezableEigenschaft befindet.
Sie erstellen ein Ressourcenwörterbuch, das in eine DLL kompiliert wird, die zwischen Apps gemeinsam genutzt wird.
Sie erstellen ein Design für ein benutzerdefiniertes Steuerelement und definieren Ressourcen, die in den Designs verwendet werden.
In diesem Fall möchten Sie in der Regel das Suchverhalten für dynamische Ressourcenverweise nicht. Verwenden Sie stattdessen statisches Ressourcenverweisverhalten, damit die Suche vorhersagbar und eigenständig für das Design ist. Bei einem dynamischen Ressourcenverweis bleibt selbst ein Verweis innerhalb eines Themes bis zur Laufzeit unevaluiert. Und es besteht die Möglichkeit, dass beim Anwenden des Themas ein lokales Element einen Schlüssel neu definiert, auf den das Thema verweist, und das lokale Element bei der Suche vor dem Thema selbst fällt. In diesem Fall funktioniert Ihr Theme nicht wie erwartet.
Sie verwenden Ressourcen, um eine große Anzahl von Abhängigkeitseigenschaften festzulegen. Abhängigkeitseigenschaften weisen eine effektive Wertzwischenspeicherung auf, wie sie vom Eigenschaftensystem aktiviert ist. Wenn Sie also einen Wert für eine Abhängigkeitseigenschaft bereitstellen, die zur Ladezeit ausgewertet werden kann, muss die Abhängigkeitseigenschaft nicht auf einen erneut ausgewerteten Ausdruck überprüfen und den letzten effektiven Wert zurückgeben. Diese Technik kann ein Leistungsvorteil sein.
Sie möchten die zugrunde liegende Ressource für alle Verbraucher ändern oder separate schreibbare Instanzen für jeden Verbraucher mithilfe des x:Shared-Attributs verwalten.
Verhalten der statischen Ressourcensuche
Im Folgenden wird der Nachschlagevorgang beschrieben, der automatisch geschieht, wenn eine statische Ressource von einer Eigenschaft oder einem Element referenziert wird:
Der Nachschlagevorgang überprüft den angeforderten Schlüssel innerhalb des vom Element definierten Ressourcenwörterbuchs, das die Eigenschaft festlegt.
Der Nachschlagevorgang durchläuft dann die logische Struktur nach oben zum übergeordneten Element und zum zugehörigen Ressourcenwörterbuch. Dieser Vorgang wird fortgesetzt, bis das Stammelement erreicht ist.
App-Ressourcen werden überprüft. App-Ressourcen sind diese Ressourcen innerhalb des Ressourcenwörterbuchs, das vom Application Objekt für Ihre WPF-App definiert wird.
Statische Ressourcenverweise aus einem Ressourcenverzeichnis müssen auf eine Ressource verweisen, die bereits vor dem Ressourcenverweis lexikalisch definiert wurde. Vorwärtsverweise können nicht durch einen statischen Ressourcenverweis aufgelöst werden. Entwerfen Sie aus diesem Grund die Ressourcenverzeichnisstruktur so, dass Ressourcen am oder am Anfang jedes jeweiligen Ressourcenwörterbuchs definiert sind.
Die statische Ressourcensuche kann auf Designs oder Systemressourcen ausgeweitet werden, aber diese Suche wird nur unterstützt, weil das XAML-Ladeprogramm die Anforderung aufschiebt. Die Verzögerung ist erforderlich, damit das Laufzeitdesign zum Zeitpunkt des Ladens der Seite ordnungsgemäß auf die App angewendet wird. Statische Ressourcenverweise auf Schlüssel, die nur in Themen oder als Systemressourcen vorhanden sind, werden nicht empfohlen, da solche Verweise nicht neu ausgewertet werden, wenn das Thema vom Benutzer in Echtzeit geändert wird. Ein dynamischer Ressourcenverweis ist zuverlässiger, wenn Sie Themen- oder Systemressourcen anfordern. Die Ausnahme ist, wenn ein Designelement selbst eine andere Ressource anfordert. Diese Verweise sollten statische Ressourcenverweise sein, aus den oben genannten Gründen.
Das Ausnahmeverhalten, wenn ein statischer Ressourcenverweis nicht gefunden wird, variiert. Wenn die Ressource zurückgestellt wurde, tritt die Ausnahme während der Laufzeit auf. Wenn die Ressource nicht zurückgestellt wurde, tritt die Ausnahme während der Ladezeit auf.
Dynamische Ressourcen
Dynamische Ressourcen funktionieren am besten, wenn:
Der Wert der Ressource, einschließlich Systemressourcen oder Ressourcen, die andernfalls vom Benutzer festgelegt werden können, hängt von Bedingungen ab, die erst zur Laufzeit bekannt sind. Sie können beispielsweise Setterwerte erstellen, die auf Systemeigenschaften verweisen, wie sie von SystemColors, SystemFonts oder SystemParameters bereitgestellt werden. Diese Werte sind wirklich dynamisch, da sie letztendlich aus der Laufzeitumgebung des Benutzers und Betriebssystems stammen. Möglicherweise verfügen Sie auch über Designs auf Anwendungsebene, die sich ändern können, wobei der Ressourcenzugriff auf Seitenebene auch die Änderung erfassen muss.
Sie erstellen oder verweisen auf Themenstile für ein benutzerdefiniertes Steuerelement.
Sie beabsichtigen, den Inhalt einer ResourceDictionary App während der App-Lebensdauer anzupassen.
Sie verfügen über eine komplizierte Ressourcenstruktur mit Abhängigkeiten, bei denen möglicherweise ein Vorwärtsverweis erforderlich ist. Statische Ressourcenverweise unterstützen keine Vorwärtsverweise, aber dynamische Ressourcenverweise unterstützen sie, da die Ressource erst zur Laufzeit ausgewertet werden muss, und Weiterleitungsverweise sind daher kein relevantes Konzept.
Sie verweisen auf eine Ressource, die aus der Perspektive eines Kompilierungs- oder Arbeitssatzes groß ist, und die Ressource wird möglicherweise nicht sofort verwendet, wenn die Seite geladen wird. Statische Ressourcenverweise werden immer aus XAML geladen, wenn die Seite geladen wird. Ein dynamischer Ressourcenverweis wird jedoch erst geladen, wenn er verwendet wird.
Sie erstellen einen Stil, bei dem Setter-Werte möglicherweise aus anderen Werten stammen, die von Themen oder anderen Benutzereinstellungen beeinflusst werden.
Sie wenden Ressourcen auf Elemente an, die während der Laufzeit der App möglicherweise in der logischen Baumstruktur neu zugeordnet werden. Wenn Sie das übergeordnete Element ändern, kann sich auch der Ressourcensuchbereich ändern. Wenn Sie möchten, dass die Ressource für ein umgesetztes Element basierend auf dem neuen Bereich neu ausgewertet wird, verwenden Sie immer einen dynamischen Ressourcenverweis.
Dynamisches Ressourcensucheverhalten
Das Ressourcensuchverhalten für einen dynamischen Ressourcenverweis parallelt das Nachschlageverhalten in Ihrem Code, wenn Sie aufrufen FindResource oder SetResourceReference:
Der Nachschlageprozess sucht den angeforderten Schlüssel im Ressourcenverzeichnis, das durch das Element definiert wird, welches die Eigenschaft festlegt.
Wenn das Element eine Style Eigenschaft definiert, hat das System.Windows.FrameworkElement.Style Element sein Resources Wörterbuch überprüft.
Wenn das Element eine Template Eigenschaft definiert, wird das System.Windows.FrameworkTemplate.Resources Wörterbuch des Elements überprüft.
Die Suche durchläuft die logische Struktur nach oben zum übergeordneten Element und dem zugehörigen Ressourcenwörterbuch. Dieser Vorgang wird fortgesetzt, bis das Stammelement erreicht ist.
App-Ressourcen werden überprüft. App-Ressourcen sind diese Ressourcen innerhalb des Ressourcenwörterbuchs, die vom Application Objekt für Ihre WPF-App definiert werden.
Das Designressourcenverzeichnis wird auf das derzeit aktive Design überprüft. Wenn sich das Design zur Laufzeit ändert, wird der Wert neu ausgewertet.
Systemressourcen werden überprüft.
Ausnahmeverhalten (falls vorhanden) variiert:
Wenn eine Ressource von einem FindResource Aufruf angefordert und nicht gefunden wurde, wird eine Ausnahme ausgelöst.
Wenn eine Ressource von einem TryFindResource Aufruf angefordert wurde und nicht gefunden wurde, wird keine Ausnahme ausgelöst, und der zurückgegebene Wert ist
null
. Wenn die festgelegte Eigenschaftnull
nicht akzeptiert, ist es dennoch möglich, dass, abhängig von der einzelnen festgelegten Eigenschaft, eine tiefere Ausnahme ausgelöst wird.Wenn eine Ressource von einem dynamischen Ressourcenverweis in XAML angefordert wurde und nicht gefunden wurde, hängt das Verhalten vom allgemeinen Eigenschaftensystem ab. Das allgemeine Verhalten ist so, als ob kein Eigenschaftseinstellungsvorgang auf der Ebene aufgetreten ist, auf der die Ressource vorhanden ist. Wenn Sie z. B. versuchen, den Hintergrund für ein einzelnes Schaltflächenelement mithilfe einer Ressource festzulegen, die nicht ausgewertet werden konnte, dann können keine Wertesatzergebnisse erzielt werden, der effektive Wert kann jedoch weiterhin von anderen Teilnehmern im Eigenschaftensystem und der Wertrangfolge stammen. Beispielsweise kann der Hintergrundwert immer noch aus einem lokal definierten Schaltflächenformat oder aus der Designformatvorlage stammen. Bei Eigenschaften, die nicht durch Designstile definiert sind, kann der effektive Wert nach einer fehlgeschlagenen Ressourcenauswertung aus dem Standardwert in den Eigenschaftenmetadaten stammen.
Einschränkungen
Dynamische Ressourcenverweise weisen einige wichtige Einschränkungen auf. Mindestens eine der folgenden Bedingungen muss erfüllt sein:
Die festgelegte Eigenschaft muss eine Eigenschaft eines FrameworkElement oder FrameworkContentElement sein. Diese Eigenschaft muss von einer DependencyProperty gesichert werden.
Der Bezug bezieht sich auf einen Wert innerhalb eines
StyleSetter
.Die zu setzende Eigenschaft muss eine Eigenschaft der Freezable sein, die als Wert entweder einer FrameworkElement- oder FrameworkContentElement-Eigenschaft oder eines Setter-Werts bereitgestellt wird.
Da die festgelegte Eigenschaft eine DependencyProperty oder Freezable eine Eigenschaft sein muss, können die meisten Eigenschaftsänderungen an die Benutzeroberfläche weitergegeben werden, da eine Eigenschaftsänderung (der geänderte dynamische Ressourcenwert) vom Eigenschaftensystem bestätigt wird. Die meisten Steuerelemente enthalten Logik, die ein anderes Layout eines Steuerelements erzwingt, wenn sich eine Eigenschaft ändert und diese Änderung das Layout beeinflussen könnte. Allerdings ist es nicht garantiert, dass alle Eigenschaften, die eine DynamicResource-Markuperweiterung als ihren Wert haben, in der Benutzeroberfläche in Echtzeit aktualisiert werden. Diese Funktionalität kann je nach Eigenschaft, dem Typ, der diese besitzt, oder sogar der logischen Struktur Ihrer App variieren.
Stile, DataTemplates und implizite Schlüssel
Obwohl alle Elemente in einem ResourceDictionary einen Schlüssel aufweisen müssen, bedeutet dies nicht, dass alle Ressourcen über eine explizite x:Key
verfügen müssen. Mehrere Objekttypen unterstützen einen impliziten Schlüssel, wenn er als Ressource definiert ist, wobei der Schlüsselwert an den Wert einer anderen Eigenschaft gebunden ist. Dieser Schlüsseltyp wird als impliziter Schlüssel bezeichnet, und ein x:Key
Attribut ist ein expliziter Schlüssel. Sie können jeden impliziten Schlüssel überschreiben, indem Sie einen expliziten Schlüssel angeben.
Ein wichtiges Szenario für Ressourcen ist die Definition eines Style. Tatsächlich wird ein Style fast immer als ein Eintrag in einem Ressourcenwörterbuch definiert, da Stile grundsätzlich für die Wiederverwendung bestimmt sind. Weitere Informationen zu Formatvorlagen finden Sie unter Formatvorlagen und Vorlagen (WPF .NET).For more information about styles, see Styles and templates (WPF .NET).
Stile für Steuerelemente können sowohl mit einem impliziten Schlüssel erstellt als auch referenziert werden. Die Designstile, die die Standarddarstellung eines Steuerelements definieren, basieren auf diesem impliziten Schlüssel. Aus der Sicht der Anforderung ist der implizite Schlüssel das Type Steuerelement selbst. Aus der Sicht der Definition der Ressourcen ist der implizite Schlüssel der TargetType Stil. Wenn Sie Designs für benutzerdefinierte Steuerelemente erstellen oder Formatvorlagen erstellen, die mit vorhandenen Designformatvorlagen interagieren, müssen Sie dafür keine x:Key-DirektiveStyleangeben. Und wenn Sie die Themenstile verwenden möchten, müssen Sie keinen Stil angeben. Die folgende Stildefinition funktioniert beispielsweise, obwohl die Style Ressource nicht über einen Schlüssel verfügt.
<Style TargetType="Button">
<Setter Property="Background" Value="#4E1A3D" />
<Setter Property="Foreground" Value="White" />
<Setter Property="BorderThickness" Value="5" />
<Setter Property="BorderBrush">
<Setter.Value>
<LinearGradientBrush>
<GradientStop Offset="0.0" Color="#4E1A3D"/>
<GradientStop Offset="1.0" Color="Salmon"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Style>
Wirklich, dieser Stil hat einen Schlüssel: den impliziten Schlüssel: den Typ System.Windows.Controls.Button
. Im Markup können Sie einen TargetType direkt als Typnamen angeben (oder Sie können optional {x:Type...} verwenden, um ein Type zurückzugeben).
Über die von WPF verwendeten Standarddesignmechanismen wird diese Formatvorlage als Laufzeitstil eines Button auf der Seite angewendet, obwohl die Button nicht ihre Style-Eigenschaft oder einen spezifischen Ressourcenverweis auf die Formatvorlage spezifiziert. Ihre auf der Seite definierte Formatvorlage befindet sich weiter oben in der Nachschlagesequenz als der Designwörterbuchstil, wobei derselbe Schlüssel verwendet wird, den der Designwörterbuchstil aufweist. Sie könnten einfach <Button>Hello</Button>
irgendwo auf der Seite angeben, und die von Ihnen mit TargetType für Button
definierte Formatvorlage würde auf diese Schaltfläche angewendet. Wenn Sie möchten, können Sie für Klarheit in Ihrem Markup die Stildefinition weiterhin explizit mit demselben Typwert wie TargetType festlegen, aber das ist optional.
Implizite Schlüssel für Stile gelten nicht für ein Steuerelement, wenn OverridesDefaultStyletrue
ist. (Beachten Sie außerdem, dass OverridesDefaultStyle als Teil des nativen Verhaltens für die Kontrollklasse festgelegt sein könnte, anstatt explizit für eine Instanz des Steuerelements. Um implizite Schlüssel für abgeleitete Klassenszenarien zu unterstützen, muss das Steuerelement DefaultStyleKey überschreiben (alle vorhandenen Steuerelemente, die als Teil von WPF bereitgestellt werden, enthalten diese Überschreibung). Weitere Informationen zu Stilen, Designs und Steuerelementdesigns finden Sie unter Richtlinien für das Entwerfen von Stilsteuerelementen.
DataTemplate verfügt außerdem über einen impliziten Schlüssel. Der implizite Schlüssel für ein Objekt DataTemplate ist der DataType Eigenschaftswert. DataType kann auch als Name des Typs angegeben werden, anstatt { x:Type...} explizit zu verwenden. Ausführliche Informationen finden Sie unter Datenvorlagen Übersicht.
Siehe auch
- Ressourcen im Code
- Zusammengeführte Ressourcenwörterbücher
- So definieren und verweisen Sie auf eine WPF-Ressource
- So verwenden Sie Systemressourcen
- Verwenden von Anwendungsressourcen
- x:Type-Markup-Erweiterung
- ResourceDictionary
- Anwendungsressourcen
- Definieren und Verweisen auf eine Ressource
- Übersicht über die Anwendungsverwaltung
- StaticResource-Markuperweiterung
- DynamicResource-Markuperweiterung
.NET Desktop feedback