Wpf x:类型和数组——如何?

Wpf x:类型和数组——如何?,wpf,arrays,types,markup-extensions,Wpf,Arrays,Types,Markup Extensions,长话短说,我需要这样做: ExpressionType="{x:Type sys:Byte[]}" foo.ExpressionType=typeof(byte[]); 换句话说,我需要这样做: ExpressionType="{x:Type sys:Byte[]}" foo.ExpressionType=typeof(byte[]); 怎么办 更新:这是2010年设计图面上的一个bug。它在运行时可以正常工作。如果在框架中没有办法这样做,那么您可以编写自己的标记扩展: public

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

ExpressionType="{x:Type sys:Byte[]}"
foo.ExpressionType=typeof(byte[]);
换句话说,我需要这样做:

ExpressionType="{x:Type sys:Byte[]}"
foo.ExpressionType=typeof(byte[]);
怎么办



更新:这是2010年设计图面上的一个bug。它在运行时可以正常工作。

如果在框架中没有办法这样做,那么您可以编写自己的标记扩展:

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:typesys:Byte[]}似乎是可行的。

@Will:实际上,仅仅做{x:typesys:Byte[]}似乎对我有效。尝试时发生了什么?您一定没有正确生成错误(?!?!)。您应该得到错误“Type sys:Byte[]not found.”它将生成,但在运行时失败。尝试将
DataContext=“{x:Type sys:Byte[]}”
添加到新的WPF表单项目并运行它。VS2008;新项目/WPF申请;将
添加到网格并运行;我得到一个显示“System.Byte[]”的窗口,这就解释了这一点。这是2010年的一个错误。我可以运行它,但当我在设计器中点击它时,会出现异常。我会把它传给接受女士该死的,我又回到这里了。如果可以的话,我会再次投票。