我想将带有参数的函数绑定到XAML中的TextBlock。函数参数的类型为System.Type
。如何在XAML中将复杂对象标记为MethodParame?
<Window.Resources>
<ObjectDataProvider x:Key="MyKey" ObjectType="{x:Type MyType}" MethodName="MyMethod">
<ObjectDataProvider.MethodParameters>
<System:Int32>123</System:Int32> <!-- e.g. a primitive type parameter -->
<MyNamespace:MyCustomType>WHAT COMES HERE?</MyNamespace:MyCustomType>
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
</Window.Resources>
[...]
<TextBlock Text="{Binding Source={StaticResource MyKey}}" />
答案 0 :(得分:1)
System.Type
是一个抽象类,因此您无法传递System.Type
类型的参数。
相反,您可以传递string
并使用Type
获取相应的Type.GetType()
。
例如
<ObjectDataProvider x:Key="MyKey" ObjectType="{x:Type local:Class1}" MethodName="Fun">
<ObjectDataProvider.MethodParameters>
<sys:String>System.Double</sys:String>
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
public class Class1
{
public string Fun(string typename)
{
Type type = Type.GetType(typename);
return type.ToString();
}
}
答案 1 :(得分:0)
使用x:Type
:
<ObjectDataProvider x:Key="MyKey" ObjectType="{x:Type MyType}" MethodName="MyMethod">
<ObjectDataProvider.MethodParameters>
<System:Int32>123</System:Int32>
<x:Type TypeName="MyNamespace:MyCustomType"></x:Type>
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>