首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过System.Type在ObjectDataProvider.MethodParameters?

如何通过System.Type在ObjectDataProvider.MethodParameters?
EN

Stack Overflow用户
提问于 2017-04-07 07:42:05
回答 2查看 456关注 0票数 0

我想在XAML中将带有参数的函数绑定到TextBlock。函数参数的类型为System.Type。如何在XAML中不将复杂对象定义为MethodParameter?

代码语言:javascript
复制
<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}}" />
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-04-07 08:16:39

使用x:Type

代码语言:javascript
复制
<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>
票数 0
EN

Stack Overflow用户

发布于 2017-04-07 08:02:15

System.Type是一个抽象类,因此不能传递System.Type类型的参数。

相反,您可以传递一个string并使用Type.GetType()获取相应的Type

例如;

代码语言:javascript
复制
   <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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43272426

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档