次の方法で共有


x:FieldModifier ディレクティブ

名前付きオブジェクト参照のフィールドが既定の動作ではなく、TypeAttributes.Public アクセスで定義されるように XAML コンパイル動作 TypeAttributes.NotPublic 変更します。

XAML 属性の使用法

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

XAML 値

価値 形容
パブリック TypeAttributes.PublicTypeAttributes.NotPublic を指定するために渡す正確な文字列は、使用される分離コード プログラミング言語によって異なります。 「解説」を参照してください。

依存 関係

XAML 運用環境で任意の場所 x:FieldModifier 使用する場合、その XAML 運用環境のルート要素は、x:Class ディレクティブを宣言する必要があります。

備考

x:FieldModifier は、クラスまたはそのメンバーの一般的なアクセス レベルの宣言には関係ありません。 これは、XAML 運用環境の一部である特定の XAML オブジェクトが処理され、アプリケーションのオブジェクト グラフでアクセスできる可能性があるオブジェクトになる場合にのみ、XAML 処理動作に関連します。 既定では、このようなオブジェクトのフィールド参照はプライベートに保持されるため、コントロール コンシューマーはオブジェクト グラフを直接変更できなくなります。 代わりに、コントロール コンシューマーは、レイアウト ルート、子要素コレクション、専用パブリック プロパティなどを取得するなど、プログラミング モデルで有効になっている標準パターンを使用してオブジェクト グラフを変更することが期待されます。

x:FieldModifier 属性の値はプログラミング言語によって異なり、その目的は特定のフレームワークによって異なる場合があります。 使用する文字列は、各言語が CodeDomProvider を実装する方法と、TypeAttributes.PublicTypeAttributes.NotPublicの意味を定義するために返される型コンバーター、およびその言語で大文字と小文字が区別されるかどうかによって異なります。

  • C# の場合、TypeAttributes.Public を指定するために渡す文字列は public

  • Microsoft Visual Basic .NET の場合、TypeAttributes.Public を指定するために渡す文字列は Public

  • C++/CLI の場合、XAML のターゲットは現在存在しません。したがって、渡す文字列は未定義です。

TypeAttributes.NotPublic (C# ではinternal、Visual Basic では Friend) を指定することもできますが、動作が既に既定値であるため、NotPublicTypeAttributes.NotPublic の指定は通常とは異なります。

TypeAttributes.NotPublic は既定の動作です。これは、XAML をコンパイルしたアセンブリの外部のコードが XAML で作成された要素にアクセスする必要がある頻度が低いためです。 WPF セキュリティ アーキテクチャと XAML コンパイル動作では、パブリック アクセスを許可するように x:FieldModifier を明示的に設定しない限り、要素インスタンスをパブリックとして格納するフィールドは宣言されません。

x:FieldModifier は、x:Name ディレクティブ を持つ要素にのみ関連します。これは、その名前がパブリックの後にフィールドを参照するために使用されるためです。

既定では、ルート要素の部分クラスは public です。ただし、x:ClassModifier ディレクティブを使用して、非パブリックにすることができます。 x:ClassModifier ディレクティブ は、ルート要素クラスのインスタンスのアクセス レベルにも影響します。 ルート要素には の両方を配置できますが、これはルート要素のパブリック フィールド コピーのみを作成します。この場合、真のルート要素クラスのアクセス レベルは引き続き x:ClassModifier ディレクティブによって制御

関連項目