Share via


Direttiva x:FieldModifier

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

Uso della sintassi XAML per gli attributi

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

Valori XAML

Valore Descrizione
Pubblica La stringa esatta da passare per specificare TypeAttributes.Public o 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 un punto qualsiasi, 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 varia in base al x:FieldModifier linguaggio di programmazione e lo scopo può variare in framework specifici. La stringa da usare dipende dal modo in cui ogni linguaggio implementa CodeDomProvider e i convertitori di tipi restituiti per definire i significati per TypeAttributes.Public e TypeAttributes.NotPublice e 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 il comportamento è già l'impostazione predefinita.

TypeAttributes.NotPublic è il comportamento predefinito perché è poco frequente che il codice all'esterno dell'assembly compilato in XAML debba accedere a un elemento creato da XAML. L'architettura di sicurezza WPF insieme al comportamento di compilazione XAML non dichiarerà i campi che archivieranno le istanze degli elementi come pubbliche, a meno che non imposti in modo specifico per consentire l'accesso x:FieldModifier pubblico.

x:FieldModifier è rilevante solo per gli elementi con una 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 che x:Namex: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 dalla direttiva x:ClassModifier.

Vedi anche