Direttiva x:FieldModifier
Modifica il comportamento di compilazione XAML in modo che i campi per i riferimenti a oggetti denominati siano definiti con l'accesso TypeAttributes.Public anziché il comportamento predefinito TypeAttributes.NotPublic.
Utilizzo degli attributi XAML
<object x:FieldModifier="Public".../>
Valori XAML
Valore | Descrizione |
---|---|
pubblico | La stringa esatta passata per specificare TypeAttributes.Public e TypeAttributes.NotPublic varia a seconda del linguaggio di programmazione code-behind usato. Vedere la sezione Osservazioni. |
Dipendenze
Se un ambiente di produzione XAML usa x:FieldModifier
ovunque, l'elemento radice di tale produzione XAML deve dichiarare una direttiva x:Class .
Osservazioni
x:FieldModifier
non è rilevante per dichiarare il livello di accesso generale di una classe o dei relativi membri. È rilevante solo per il comportamento di elaborazione XAML quando viene elaborato un particolare 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 tale oggetto viene mantenuto privato, che impedisce ai consumer di controllare di modificare direttamente l'oggetto grafico. È invece previsto che i consumer di controlli modifichino l'oggetto grafico usando modelli standard abilitati dai modelli di programmazione, ad esempio ottenendo la radice del layout, le raccolte di elementi figlio, le proprietà pubbliche dedicate e così via.
Il valore dell'attributo x:FieldModifier
varia in base al linguaggio di programmazione e lo scopo può variare in framework specifici. La stringa da usare dipende dal modo in cui ogni linguaggio implementa il relativo CodeDomProvider e i convertitori di tipi restituiti per definire i significati per TypeAttributes.Public e TypeAttributes.NotPublice se tale linguaggio fa distinzione tra maiuscole e minuscole.
Per C#, la stringa da passare per designare TypeAttributes.Public è
public
.Per Microsoft Visual Basic .NET, la stringa da passare per designare TypeAttributes.Public è
Public
.Per C++/CLI, attualmente non esistono destinazioni per XAML; pertanto, la stringa da passare non è definita.
È anche possibile specificare TypeAttributes.NotPublic (internal
in C#, Friend
in Visual Basic), ma specificare TypeAttributes.NotPublic è insolito perché NotPublic
come comportamento è già l'impostazione predefinita.
TypeAttributes.NotPublic è il comportamento predefinito perché non è frequente che il codice all'esterno dell'assembly compilato da XAML richieda l'accesso a un elemento creato da XAML. L'architettura di sicurezza WPF insieme al comportamento di compilazione XAML non dichiarerà campi che archivieranno le istanze degli elementi come pubbliche, a meno che non imposti in modo specifico il x:FieldModifier
per consentire l'accesso pubblico.
x:FieldModifier
è rilevante solo per gli elementi con un direttiva x:Name perché tale nome viene usato per fare riferimento al campo dopo che è pubblico.
Per impostazione predefinita, la classe parziale per l'elemento radice è pubblica; Tuttavia, è possibile renderlo non pubblico usando la direttiva x:ClassModifier . La direttiva x:ClassModifier influisce anche sul livello di accesso dell'istanza della classe dell'elemento radice. È possibile inserire sia x:Name
che x:FieldModifier
sull'elemento radice, ma in questo modo viene eseguita solo una copia pubblica dell'elemento radice, con il livello di accesso della classe dell'elemento radice reale ancora controllato da direttiva x:ClassModifier.
Vedere anche
.NET Desktop feedback