我想在XAML中将带有参数的函数绑定到TextBlock。函数参数的类型为System.Type。如何在XAML中不将复杂对象定义为MethodParameter?
<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}}" />发布于 2017-04-07 08:16:39
使用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>发布于 2017-04-07 08:02:15
System.Type是一个抽象类,因此不能传递System.Type类型的参数。
相反,您可以传递一个string并使用Type.GetType()获取相应的Type。
例如;
<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();
}
}https://stackoverflow.com/questions/43272426
复制相似问题