Condividi tramite


Attributo x:Shared

Se impostato su false, modifica il comportamento di recupero delle risorse WPF in modo che le richieste per la risorsa con attributi creino una nuova istanza per ogni richiesta anziché condividere la stessa istanza per tutte le richieste.

Uso della sintassi XAML per gli attributi

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

Osservazioni

x:Shared viene mappato allo spazio dei nomi XAML del linguaggio XAML e viene riconosciuto come elemento del linguaggio XAML valido dai servizi XAML .NET e dai relativi lettori XAML. Tuttavia, le funzionalità indicate di x:Shared sono rilevanti solo per le applicazioni WPF e per il parser XAML WPF. In WPF x:Shared è utile solo come attributo quando viene applicato a un oggetto esistente all'interno di un oggetto WPF ResourceDictionary. Altri utilizzi non generano eccezioni di analisi o altri errori, ma non hanno alcun effetto.

Il significato di x:Shared non è specificato nella specifica del linguaggio XAML. Altre implementazioni XAML, ad esempio quelle basate su servizi XAML .NET, non forniscono necessariamente il supporto per la condivisione delle risorse. Tali implementazioni XAML potrebbero fornire un comportamento simile nel framework di supporto che usava x:Shared anche valori.

In WPF la condizione predefinita x:Shared per le risorse è true. Questa condizione indica che qualsiasi richiesta di risorsa specificata restituisce sempre la stessa istanza.

La modifica di un oggetto restituito tramite un'API di risorsa, ad esempio FindResource, o la modifica di un oggetto direttamente all'interno di un ResourceDictionaryoggetto , modifica la risorsa originale. Se i riferimenti a tale risorsa erano riferimenti a risorse dinamiche, i consumer di tale risorsa ottengono la risorsa modificata.

Se i riferimenti alla risorsa erano riferimenti a risorse statiche, le modifiche apportate alla risorsa dopo il tempo di elaborazione XAML sono irrilevanti. Per altre informazioni sui riferimenti alle risorse statiche e dinamiche, vedere Panoramica delle risorse XAML (WPF .NET).

La specifica x:Shared="true" in modo esplicito viene eseguita raramente, perché è già l'impostazione predefinita. Non esiste alcun codice diretto equivalente per x:Shared nel modello a oggetti WPF. Può essere specificato solo in un utilizzo XAML e deve essere elaborato dal comportamento WPF predefinito o in un flusso di nodi XAML intermedio nel percorso di caricamento se elaborato usando i servizi XAML .NET e i relativi lettori XAML.

Uno scenario per x:Shared="false" è se si definisce una FrameworkElement classe derivata o FrameworkContentElement come risorsa e quindi si introduce la risorsa elemento in un oggetto con modalità tenda l. x:Shared="false"consente di introdurre più volte una risorsa elemento nella stessa raccolta , ad esempio .UIElementCollection Senza x:Shared="false" questo valore non è valido perché la raccolta applica l'univocità del relativo contenuto. Tuttavia, il x:Shared="false" comportamento crea un'altra istanza identica della risorsa anziché restituire la stessa istanza.

Un altro scenario per x:Shared="false" è se si usa una Freezable risorsa per i valori di animazione, ma si vuole modificare la risorsa in base all'animazione.

La gestione delle stringhe di false non fa distinzione tra maiuscole e minuscole.

In WPF x:Shared è valido solo nelle condizioni seguenti:

Vedi anche