ContentPresenter.ContentSource против Контента - PullRequest
13 голосов
/ 09 апреля 2011

По сути, я не понимаю, в чем здесь реальная разница:

Код Microsoft для TabItem использует:

<ContentPresenter ContentSource="Header" ... />

Итак, когда можно использовать свойство Contentвместо (или в дополнение к) ContentSource?

1 Ответ

16 голосов
/ 09 апреля 2011

Это свойство следует использовать только когда ContentPresenter находится в шаблоне. Когда шаблон содержит ContentPresenter с ContentSource установить на «Abc», Контент, ContentTemplate и Свойства ContentTemplateSelector из ContentPresenter автоматически псевдоним Abc, AbcTemplate и AbcTemplateSelector соответственно. Начиная с .NET Framework версия 3.5 с пакетом обновления 1, настройка ContentSource для "Abc" также вызывает Свойство ContentStringFormat должно быть с псевдонимом AbcStringFormat.

Два наиболее полезных значения для этого свойство "Содержимое" и "Заголовок".

( MSDN )

ContentSource, по-видимому, одновременно устанавливает больше свойств для удобства.


Практически, декларация:

<ContentPresenter ContentSource="Header" />

Выполняет следующую инициализацию.

<ContentPresenter Content="{TemplateBinding Header}"
                  ContentTemplate="{TemplateBinding HeaderTemplate}"
                  ContentTemplateSelector="{TemplateBinding HeaderTemplateSelector}"
                  ContentStringFormat="{TemplateBinding HeaderStringFormat}" />

Это делается для каждого свойства отдельно, только если свойство свойства существует в шаблонном элементе управления.

...