2011-06-01 136 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