gpt4 book ai didi

wpf - 在 WPF 中,我如何限制面板中子项的类型?

转载 作者:行者123 更新时间:2023-12-02 02:27:53 24 4
gpt4 key购买 nike

我们想创建一个 Canvas 的子类,它只允许特定类型的 child (他们需要对我们的子类有深入的了解,反之亦然。)也就是说,有没有办法强制面板只接受 child 某种(或多种)类型?

中号

最佳答案

我们想出的解决方案是简单地将 Canvas 子类化,然后监控 child 。如果添加的不是我们想要的类型,我们会立即将其删除并抛出错误。不会阻止编译时错误,但可以解决问题。

进一步扩展我正在考虑对 Canvas 进行子类化,然后在 Children 属性上进行 Newing 以返回我们自己的集合,我们已通过绑定(bind)在内部同步到面板的子项。这样我们也可以获得编译时支持。当然,如果有人将我们的子类转换到一个直接的 Canvas 上,那么显然不会访问“新的 Children 属性”(它是“新的”而不是覆盖),但上述集合监控仍然会为我们提供我们想要的东西。

如果 WPF 团队想出一个通用的 Canvas ,这样我们就可以做类似 Canvas 的事情,那会很好,但显然这在 XAML 中行不通,除非他们以某种方式想出语法那。话又说回来, Canvas 是非常基础的,所以也许我们会推出我们自己的通用版本,在那里我们可以做这样的事情......

public class TypedCanvas<t> : PanelBase
{
// Implementation here
}

public class FooCanvas : TypedCanvas<Foo>{}
public class LaaCanvas : TypedCanvas<Laa>{}

...其中我们可以然后通过 XAML 使用 FooCanvas 和 LaaCanvas,同时仍然获得使用泛型的所有好处。

更好的是,将其设为 TypedPanelBase,这样我们就可以将其与任何其他自定义面板一起用作基本类型。

实际上,既然我输入了这个...我想我要重新编写我们的 Canvas 来尝试这种方法! (不管怎样,我现在有了一个解决方案,这就是我们所追求的。)

关于wpf - 在 WPF 中,我如何限制面板中子项的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5000244/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com