gpt4 book ai didi

WPF:包含控件与继承控件的自定义 UserControl

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

我正在创建一个 UserControl,它是一个专门的 ListBox/View(类型不相关)。现在,我面临着将类型保留为 UserControl 或继承 List 控件的选项。

1) 如果我将它保留为 UserControl,我在其中有一个 List 控件,然后我必须为 ItemsSource 等创建一个 DP。

2) 让它继承List控件,从而自动暴露ItemsSource属性。

无论哪种方式都可以接受,还是会变成某种代码恐怖。什么是预期的。

是否有我不知道的选项 3?

最佳答案

恐怕没有唯一的正确答案。相对优点是:

#1 在 UserControl 中托管一个 List

优点

  • 设计此控件更容易,即 VisualStudio 非常好地支持 UserControls
  • 您可以限制您正在“扩展”的控件的界面,例如,如果您想抑制 ListView 的某些功能,您可以通过简单地不公开它来实现。

缺点

  • 您必须通过创建您自己的 ItemsSourceItemTemplate 属性等手动公开 ListView 的功能...但是您可以公开 ListView 如果您愿意,可以将其作为您的 UserControl 的属性。

#2 继承自 ListView

优点

  • 如果您要替换现有的 ListView 实例,则立即替换插件。
  • 您不必镜像 ListView 的属性。

缺点

  • 如果要添加其他控件,则必须创建一个新模板。这可能很复杂。
  • 您无法轻易抑制 ListView 的功能。

因此,这实际上取决于您想要实现的目标。如果你想显着改变 API,我个人会选择 (1),例如为一个非常特定的目的专门化 ListView。如果您要创建高度通用的扩展,我会选择 (2)。

关于WPF:包含控件与继承控件的自定义 UserControl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6201343/

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