この質問は、 Creating an instance of a nested class in XAML と重複している可能性があります。この質問と関連する MSDN ドキュメントは、ネストされた型に関係しています。この例では、型自体はネストされていませんが、構文はおなじみのようです。それが別の質問と回答を正当化するかどうかは、私にはわかりません。
を使用してネストされたプロパティにアクセスしたいと思いますObjectDataProvider
。型の静的プロパティにアクセスできますが、型の静的プロパティを介してインスタンス プロパティにアクセスすると、コンパイル エラーが発生します。
たとえば、次の 3 つのクラスを取り上げます。
public static class A
{
static A()
{
BProperty = new B();
}
public static B BProperty { get; private set; }
}
public class B
{
public B()
{
CProperty = new C();
}
public C CProperty { get; private set; }
public string GetValue(string arg)
{
return arg + " from B";
}
}
public class C
{
public string GetValue(string arg)
{
return arg + " from C";
}
}
ObjectDataProvider
for BProperty
onの作成はA
、次の XAML を使用して実行できます。
<Window.Resources>
<ObjectDataProvider x:Key="provider"
ObjectInstance="{x:Static Member=local:A.BProperty}"
MethodName="GetValue">
<ObjectDataProvider.MethodParameters>
<System:String>string argument</System:String>
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
</Window.Resources>
<Grid>
<Label Content="{Binding Source={StaticResource provider}}" />
</Grid>
このコードを実行すると、「B からの文字列引数」というテキストのラベルが生成されます。
を に設定provider
するObjectInstance
と、"{x:Static Member=local:A.BProperty.CProperty}"
または"{x:Static Member=local:A.BProperty+CProperty}"
コンパイル エラーが発生します。
からの のインスタンスにアクセスCProperty
するにはどうすればよいですか?A
BProperty
ObjectDataProvider