Freigeben über


x:Shared-Attribut

Aktualisiert: November 2007

Wenn dieses Attribut auf false gesetzt ist, ändert es das Ressourcenabrufverhalten von Windows Presentation Foundation (WPF) so, dass bei Anforderungen einer Ressource für jede Anforderung jeweils eine neue Instanz erstellt wird, anstatt eine Instanz für alle Anforderungen zu verwenden.

Verwendung von XAML-Attributen

<ResourceDictionary>
  <object x:Shared="false".../>
</ResourceDictionary>

Hinweise

Die standardmäßige x:Shared-Bedingung von Ressourcen lautet true. Diese Bedingung bedeutet, dass jede Ressourcenanforderung immer dieselbe Instanz zurückgibt. Beim Ändern eines Objekts, das über eine Ressourcen-API wie FindResource zurückgegeben wird, oder beim direkten Ändern eines Objekts in einem ResourceDictionary wird die ursprüngliche Ressource geändert. Wenn es sich bei den Verweisen auf diese Ressource um dynamische Verweise gehandelt hat, erhalten die Consumer dieser Ressource die geänderte Ressource. (Wenn es sich bei den Verweisen auf die Ressource um statische Ressourcenverweise gehandelt hat, sind Änderungen der Ressource nach dem XAML-Verarbeitungszeitraum irrelevant. Ausführliche Informationen zu den Unterschieden zwischen statischen und dynamischen Ressourcenverweisen finden Sie unter Übersicht über Ressourcen.)

Das Angeben von x:Shared="true" tritt nicht häufig auf, weil dies bereits die Standardeinstellung ist. Es gibt keine direkte Codeentsprechung für x:Shared.

Ein Szenario für x:Shared="false" ist, wenn Sie eine abgeleitete Klasse von FrameworkElement oder FrameworkContentElement als Ressource definieren und die Elementressource in ein Inhaltsmodell einfügen. Mithilfe von x:Shared="false" kann eine Elementressource mehrfach in eine Auflistung eingefügt werden (z. B. in eine UIElementCollection). Ohne die Angabe x:Shared="false" wäre dies nicht zulässig, da in der Auflistung die Eindeutigkeit des Inhalts erzwungen wird. Das Verhalten x:Shared="false" erstellt im Grunde genommen jedoch eine weitere identische Instanz der Ressource, anstatt dieselbe Instanz zurückzugeben.

Ein anderes Szenario für x:Shared="false" ist, wenn Sie eine Freezable-Ressource für Animationswerte verwenden, die Ressource jedoch individuell pro Animation ändern möchten.

Bei der Zeichenfolgenbehandlung von "false" wird die Groß-/Kleinschreibung nicht berücksichtigt.

x:Shared ist nur unter den folgenden Bedingungen gültig:

Siehe auch

Konzepte

Übersicht über Ressourcen

Referenz

ResourceDictionary

Weitere Ressourcen

Basiselemente