I'm not sure when I should use ContentPresenter
instead of ContentControl
(and vice-versa). At the moment, I'm using ContentControl
pretty much all the time in my DataTemplate
s. When would ContentPresenter
be a better choice? and why?
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):
ControlTemplate
use ContentPresenter
ControlTemplate
(including DataTemplate
and outside templates) try not to use any of them, if you need to, you must prefer ContentPresenter
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).