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年的一个错误。我可以运行它,但当我在设计器中点击它时,会出现异常。我会把它传给接受女士该死的,我又回到这里了。如果可以的话,我会再次投票。