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

发布于 2024-09-10 16:46:53 字数 228 浏览 5 评论 0原文

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

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

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

foo.ExpressionType=typeof(byte[]);

Wat do?


更新:这是 2010 设计界面中的一个错误。它在运行时运行良好。

Long story short, I need to do this:

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

In other words, I need to do this:

foo.ExpressionType=typeof(byte[]);

Wat do?


Update: Its a bug in the 2010 design surface. It works fine at runtime.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

花之痕靓丽 2024-09-17 16:46:53

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

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[]} 似乎就可以了。

If there is no way to do it in the framework, then you can write your own markup extension:

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();
    }
}

Usage:

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

Actually, just doing {x:Type sys:Byte[]} seems to work.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文