x:类型和数组 - 如何?

时间:2010-07-16 20:07:41

标签: wpf arrays types markup-extensions

长话短说,我需要这样做:

ExpressionType="{x:Type sys:Byte[]}"

换句话说,我需要这样做:

foo.ExpressionType=typeof(byte[]);

Wat do?


更新:这是2010年设计界的一个漏洞。它在运行时工作正常。

1 个答案:

答案 0 :(得分:1)

如果在框架中无法做到这一点,那么您可以编写自己的标记扩展名:

public class ArrayTypeExtension
    : MarkupExtension
{
    public ArrayTypeExtension() {}

    public ArrayTypeExtension(Type type)
    {
        this.Type = type;
    }

    public Type Type { get; set; }

    public override object ProvideValue(IServiceProvider serviceProvider)
    {
        return Type == null ? null : Type.MakeArrayType();
    }
}

用法:

ExpressionType="{local:ArrayType sys:Byte}"

实际上,只做{x:Type sys:Byte []}似乎有效。