1

我正在尝试在 XAML 中获取类型对象。

x:Type={...}

但我意识到 Silverlight 不支持它。我试图在以下问题中使用它(在EnumerationExtension课堂上):

将枚举属性数据绑定到 WPF 中的组合框

我能做些什么来传递 XAML 中的类型?C

4

2 回答 2

1

if SL 5 then custom MarkupExtension
else Binding with Converter that returns value.GetType()


ME example:

public class TypeExtension : IMarkupExtension<Type>
{
    public string TypeName { get; set; }

    public TypeExtension() { }
    public TypeExtension(string typeName)
        : this()
    {
        if (typeName == null) throw new ArgumentNullException("typeName");

        TypeName = typeName;
    }

    public Type ProvideValue(IServiceProvider serviceProvider)
    {
        var typeResolver = (IXamlTypeResolver)serviceProvider.GetService(typeof(IXamlTypeResolver));
        var type = typeResolver.Resolve(TypeName);
        return type;
    }
}

Note that there is no support for the constructors in SL 5, so you need to use the property names in XAML:

{me:Type TypeName=local:SomeClass}
于 2012-08-21T19:49:27.557 回答
0

您可以创建自定义标记扩展(自 Silverlight 5 起可用)

或者你可以使用这个

于 2012-08-21T19:45:25.647 回答