2011-06-01 101 views
3

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

1)如果我保留它作为一个UserControl我有一个List控件里面,然后我必须创建一个DP的ItemsSource等。

2)让它继承List控件,因此它会自动公开ItemsSource属性。

无论哪种方式可以接受,或将成为一些代码恐怖。什么是预期的。

有没有选择3我不知道?

回答

3

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

#1主机一UserControl

投票站

  • 这是比较容易设计出这种控制中的List,即VisualStudio中支持用户控件很好地
  • 你可以限制您正在“扩展”的控件的界面,例如,如果您想要抑制ListView的某些功能,你可以通过不暴露它来做到这一点。

CON外

  • 您必须手动曝光ListView控件的功能,通过创建自己的ItemsSourceItemTemplate属性等等...但是,您可以暴露ListView为您的用户控件的属性如果你喜欢。

#2从ListView

投票站

  • 继承,如果您要更换现有ListView情况下,可提供即时的插件更换。
  • 您不必镜像ListView的属性。

CON外

  • 如果要添加其他控件,你必须创建一个新的模板。这可能很复杂。
  • 您不能轻易地禁止ListView的功能。

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

+0

谢谢。至少我知道这两种方法都是有效的。 – 2011-06-01 15:55:02