Condividi tramite


Direttiva x:FieldModifier

Modifica il comportamento di compilazione XAML in modo che i campi per riferimenti a oggetti denominati vengano impostati con accesso TypeAttributes.Public anziché TypeAttributes.NotPublic, che rappresenta il comportamento predefinito.

Utilizzo della sintassi XAML per gli attributi

<object x:FieldModifier="Public".../>

Valori XAML

Pubblico

Stringa esatta da passare per specificare la differenza tra TypeAttributes.Public e TypeAttributes.NotPublic in base al linguaggio di programmazione code-behind utilizzato. Vedere la sezione Osservazioni.

Dipendenze

Se una produzione XAML utilizza x:FieldModifier dovunque, l'elemento radice di quella produzione XAML deve dichiarare un Direttiva x:Class.

Note

x:FieldModifier non è pertinente per la dichiarazione del livello di accesso generale di una classe o dei relativi membri. È invece pertinente solo per il comportamento di elaborazione XAML quando viene elaborato un determinato oggetto XAML che fa parte di una produzione XAML e diventa un oggetto potenzialmente accessibile nell'oggetto grafico di un'applicazione. Per impostazione predefinita, il riferimento al campo per un oggetto di questo tipo viene mantenuto privato, impedendo ai consumer dei controlli di modificare direttamente la struttura ad albero di oggetti grafici. I consumer dei controlli potranno invece modificare oggetti grafici utilizzando modelli standard abilitati da modelli di programmazione, ad esempio ottenendo la radice di layout, gli insiemi di elementi figlio, le proprietà pubbliche dedicate e così via.

Il valore per l'attributo x:FieldModifier varia in base al linguaggio di programmazione e il relativo scopo potrà variare in framework specifici. La stringa da utilizzare dipende dal modo in cui ciascun linguaggio implementa CodeDomProvider e dai convertitori dei tipi restituiti per definire i significati per TypeAttributes.Public e TypeAttributes.NotPublic, nonché dal rilevamento della distinzione tra maiuscole e minuscole nel linguaggio specifico.

  • Per C#, la stringa da passare per definire TypeAttributes.Public è public.

  • Per Microsoft Visual Basic .NET, la stringa da passare per definire TypeAttributes.Public è Public.

  • Per C++/CLI, non sono disponibili attualmente destinazioni per XAML, pertanto la stringa da passare non è definita.

È inoltre possibile specificare TypeAttributes.NotPublic (internal in C# e Friend in Visual Basic), ma la specifica di TypeAttributes.NotPublic è una scelta insolita, in quanto il comportamento di NotPublic è già quello predefinito.

TypeAttributes.NotPublic è l'impostazione predefinita in quanto è insolito che il codice esterno all'assembly che ha compilato il XAML debba accedere a un elemento creato in XAML. Grazie all'architettura di sicurezza WPF e al comportamento di compilazione XAML, i campi in cui vengono archiviate istanze dell'elemento non vengono dichiarati come pubblici, a meno che non si imposti in modo specifico l'attributo x:FieldModifier per consentire l'accesso pubblico.

L'attributo x:FieldModifier è rilevante solo per gli elementi con un attributo Direttiva x:Name, poiché tale nome viene utilizzato per fare riferimento al campo dopo che è pubblico.

Per impostazione predefinita, la classe parziale per l'elemento radice è pubblica, per impostazione predefinita tuttavia è possibile renderla non pubblica utilizzando Direttiva x:ClassModifier. Direttiva x:ClassModifier influisce anche sul livello di accesso dell'istanza della classe di elementi radice. È possibile inserire x:Name e x:FieldModifier nell'elemento radice, tuttavia questa operazione consente solo di creare una copia del campo pubblico dell'elemento radice, mentre il livello di accesso della classe del vero elemento radice è ancora controllato da Direttiva x:ClassModifier.

Vedere anche

Riferimenti

Direttiva x:Name

Direttiva x:ClassModifier

Concetti

Classi XAML e personalizzate per WPF

Code-behind e XAML in WPF

Compilazione di un'applicazione WPF (WPF)