长话短说,我需要这样做:
ExpressionType="{x:Type sys:Byte[]}"
换句话说,我需要这样做:
foo.ExpressionType=typeof(byte[]);
Wat do?
更新:这是2010年设计界的一个漏洞。它在运行时工作正常。
答案 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 []}似乎有效。