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:
De ResourceDictionary die de items met
x:Shared
bevat, moet worden gecompileerd. De ResourceDictionary kan niet los XAML zijn of worden gebruikt voor thema's.De ResourceDictionary die de items bevat, mogen niet worden genest binnen een andere ResourceDictionary. U kunt bijvoorbeeld geen
x:Shared
gebruiken voor items in een ResourceDictionary die zich in een Style bevindt die al een ResourceDictionary item is.
Zie ook
.NET Desktop feedback