Attributo x:Shared
Aggiornamento: novembre 2007
Se impostato su false, modifica il comportamento di recupero delle risorse di Windows Presentation Foundation (WPF). Pertanto, le richieste per una risorsa creano una nuova istanza per ciascuna richiesta, anziché condividere la stessa istanza per tutte le richieste.
Utilizzo della sintassi XAML per gli attributi
<ResourceDictionary>
<object x:Shared="false".../>
</ResourceDictionary>
Note
La condizione x:Shared predefinita per le risorse è true. Tale condizione indica che qualsiasi richiesta della risorsa data restituisce sempre la stessa istanza. La modifica di un oggetto restituito tramite una risorsa API, ad esempio FindResource o la modifica diretta di un oggetto all'interno di un oggetto ResourceDictionary, modifica la risorsa originale. Se i riferimenti a quella risorsa erano riferimenti alla risorsa dinamica, gli utenti di quella risorsa otterranno la risorsa modificata. Se i riferimenti alla risorsa erano riferimenti alla risorsa statica, le modifiche alla risorsa dopo il tempo di elaborazione XAML sono irrilevanti. Per i informazioni dettagliate sulle differenze tra i riferimenti alle risorse statiche e i riferimenti alle risorse dinamiche, vedere Cenni preliminari sulle risorse.)
La specifica di x:Shared="true" non è comune, in quanto si tratta già di un valore predefinito. Non esiste un codice equivalente per l'attributo x:Shared.
L'attributo x:Shared="false" può essere utilizzato quando si definisce una classe derivata FrameworkElement o FrameworkContentElement come risorsa e si introduce la risorsa dell'elemento in un modello di contenuto. x:Shared= "false" consente di introdurre più volte una risorsa dell'elemento nello stesso insieme (ad esempio un oggetto UIElementCollection). Senza x:Shared= "false" tale operazione non sarebbe consentita, in quanto l'insieme applica l'unicità del contenuto. Tuttavia, il comportamento di x:Shared= "false" crea fondamentalmente un'altra istanza identica della risorsa, piuttosto che restituire la stessa istanza.
Un altro scenario in cui è possibile utilizzare x:Shared= "false" si verifica quando si utilizza una risorsa Freezable per i valori di animazione, ma si decide di modificare la risorsa per singola animazione.
Per la gestione di stringa di false non viene effettuata alcuna distinzione tra maiuscole e minuscole.
L'attributo x:Shared è consentito solo nelle seguenti condizioni:
L'oggetto ResourceDictionary che contiene gli elementi con l'attributo x:Shared deve essere compilato. L'oggetto ResourceDictionary non può essere presente all'interno della sintassi XAML libera né essere utilizzato per i temi.
L'oggetto ResourceDictionary che contiene gli elementi non deve essere nidificato in un altro oggetto ResourceDictionary. Ad esempio, non è possibile utilizzare l'attributo x:Shared per gli elementi di un oggetto ResourceDictionary che si trova all'interno di un oggetto Style che è già un elemento ResourceDictionary.
Vedere anche
Concetti
Cenni preliminari sulle risorse