x:FieldModifier 属性
更新 : 2007 年 11 月
指定されているオブジェクト参照のフィールドが、既定動作の Public ではなく NonPublic アクセスで定義されるように、XAML のコンパイル動作を変更します。
XAML 属性の使用方法
<object x:FieldModifier="Public".../>
XAML 値
Public |
Public か NonPublic かを指定するために渡す正確な文字列は、使用されている分離コード プログラミング言語によって異なります。「解説」を参照してください。 |
依存関係
x:Name も同じ要素に提供される必要があります。
解説
x:FieldModifier 属性の値は、プログラミング言語によって異なります。使用する文字列は、各言語が CodeDomProvider および TypeAttributes.Public と TypeAttributes.NonPublic の意味を定義するために返す型コンバータの実装方法と、その言語が大文字と小文字を区別するかどうかによって決まります。
C# の場合、Public を指定するために渡す文字列は public です。
Microsoft Visual Basic .NET の場合、Public を指定するために渡す文字列は Public です。
C++/CLI の場合、C++/CLI ターゲットは現時点では XAML のコンパイルをサポートしていません。
NonPublic (C# では internal、Microsoft Visual Basic .NET では Friend) を指定することもできますが、動作としては NonPublic が既定となっているため一般的ではありません。
NonPublic が既定値になっているのは、XAML をコンパイルしたアセンブリの外部のコードが XAML によって作成された要素にアクセスする必要があることは一般的でないためです。ユーザーが明確に x:FieldModifier を設定しない限り、WPF のセキュリティ アーキテクチャは、要素のインスタンスを格納するフィールドを Public にしないことを意図的に選択します。
x:FieldModifier は、x:Name 属性が指定されている要素に対してのみ関係します。これは、フィールドが Public になると、その名前を使用してフィールドを参照するためです。
ルート要素の部分クラスは既定で Public になっていますが、x:ClassModifier 属性を使用して NonPublic にすることができます。x:ClassModifier 属性は、ルート要素クラスのインスタンスのアクセス レベルにも影響を与えます。ルート要素には x:Name と x:FieldModifier の両方を配置できますが、これはルート要素の Public フィールドのコピーを作成するだけであり、実際のルート要素クラスのアクセス レベルは引き続き x:ClassModifier 属性によって制御されます。