ContentControl
is a base class for controls that contain other elements and have a Content
-property (for example, Button
).
ContentPresenter
is used inside control templates to display content.
ContentControl
, when used directly (it's supposed to be used as a base class), has a control template that uses ContentPresenter to display it's content.
My rules of thumb (not applicable in every case, use your judgment):
- Inside
ControlTemplate
use ContentPresenter
- Outside of
ControlTemplate
(including DataTemplate
and outside templates) try not to use any of them, if you need to, you must prefer ContentPresenter
- Subclass
ContentControl
if you are creating a custom "lookless" control that host content and you can't get the same result by changing an existing control's template (that should be extremely rare).
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…