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

时间:2011-06-01 12:45:33

标签: wpf inheritance user-controls

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

1)如果我把它保存为UserControl,我在其中有一个List控件,然后我必须为ItemsSource创建一个DP,依此类推。

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

是否可接受或将成为Code Horror。期待什么。

可能有一个选项3我不知道了吗?

1 个答案:

答案 0 :(得分:3)

我害怕没有一个正确的答案。相对优点是:

#1在List 中托管UserControl

<强>赞成

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

<强> CON外

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

#2继承自ListView

<强>赞成

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

<强> CON外

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

所以,这实际上取决于你想要达到的目标。就个人而言,如果你想要显着改变API,我会选择(1),例如专门针对特定用途的ListView。如果你要创建一个高度通用的扩展,我会去(2)。