Подтвердить что ты не робот

ContentPresenter.ContentSource vs Content

В принципе, я не понимаю, в чем тут разница:

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

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

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

4b9b3361

Ответ 1

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

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

(MSDN)

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


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

<ContentPresenter ContentSource="Header" />

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

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

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