Delen via


x:Shared Attribute

Als deze optie is ingesteld op false, wijzigt u het gedrag van WPF-resources voor het ophalen van resources, zodat aanvragen voor de toegewezen resource een nieuw exemplaar voor elke aanvraag maken in plaats van hetzelfde exemplaar voor alle aanvragen te delen.

XAML-kenmerkgebruik

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

Opmerkingen

x:Shared is toegewezen aan de XAML-taal XAML-naamruimte en wordt herkend als een geldig XAML-taalelement door .NET XAML Services en de bijbehorende XAML-lezers. De vermelde mogelijkheden van x:Shared zijn echter alleen relevant voor WPF-toepassingen en voor de WPF XAML-parser. In WPF is x:Shared alleen nuttig als een kenmerk wanneer deze wordt toegepast op een object dat bestaat binnen een WPF-ResourceDictionary. Andere gebruiksrechten genereren geen parse-uitzonderingen of andere fouten, maar ze hebben geen effect.

De betekenis van x:Shared wordt niet opgegeven in de XAML-taalspecificatie. Andere XAML-implementaties, zoals implementaties die zijn gebaseerd op .NET XAML-services, bieden niet noodzakelijkerwijs ondersteuning voor het delen van resources. Dergelijke XAML-implementaties kunnen vergelijkbaar gedrag bieden in het ondersteunende framework dat ook x:Shared waarden heeft gebruikt.

In WPF is de standaardvoorwaarde x:Shared voor resources true. Deze voorwaarde betekent dat elke resourceaanvraag altijd hetzelfde exemplaar retourneert.

Als u een object wijzigt dat wordt geretourneerd via een resource-API, zoals FindResource, of een object rechtstreeks binnen een ResourceDictionarywijzigt, wordt de oorspronkelijke resource gewijzigd. Als verwijzingen naar die resource dynamische bronverwijzingen waren, krijgen de gebruikers van die resource de gewijzigde resource.

Als verwijzingen naar de resource statische bronverwijzingen waren, zijn wijzigingen in de resource na de verwerkingstijd van XAML niet relevant. Zie Overzicht van XAML-resources (WPF .NET)voor meer informatie over statische versus dynamische resourceverwijzingen.

Het expliciet opgeven van x:Shared="true" wordt zelden uitgevoerd, omdat dat al de standaardinstelling is. Er is geen directe code-equivalent voor x:Shared in het WPF-objectmodel; het kan alleen worden opgegeven in een XAML-gebruik en moet worden verwerkt door het standaard WPF-gedrag of in een tussenliggende XAML-knooppuntstroom op het laadpad als deze wordt verwerkt met .NET XAML-services en de bijbehorende XAML-lezers.

Een scenario voor x:Shared="false" is als u een FrameworkElement of FrameworkContentElement afgeleide klasse definieert als een resource en vervolgens de elementresource in een inhoudsmodel introduceert. x:Shared="false" maakt het mogelijk om een elementresource meerdere keren in dezelfde verzameling (zoals een UIElementCollection) te introduceren. Zonder x:Shared="false" is dit ongeldig omdat de verzameling uniekheid van de inhoud afdwingt. Het x:Shared="false" gedrag maakt echter een ander identiek exemplaar van de resource in plaats van hetzelfde exemplaar te retourneren.

Een ander scenario voor x:Shared="false" is als u een Freezable resource gebruikt voor animatiewaarden, maar de resource per animatie wilt wijzigen.

De tekenreeksafhandeling van false is niet hoofdlettergevoelig.

In WPF is x:Shared alleen geldig onder de volgende voorwaarden:

Zie ook