17

基本的に、私はここでの本当の違いが何であるかを理解していません:

TabItem の Microsoft コードは次を使用します。

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

では、いつContentプロパティを代わりに (またはそれに加えて)使用するのでしょContentSourceうか?

4

1 に答える 1

24

このプロパティは、ContentPresenterがテンプレートにある場合にのみ使用する必要があります。テンプレートにContentSourceが「Abc」に設定されたContentPresenterが含まれている場合、ContentPresenterのContent、ContentTemplate、およびContentTemplateSelectorプロパティは、それぞれAbc、AbcTemplate、およびAbcTemplateSelectorに自動的にエイリアスされます。.NETFrameworkバージョン3.5ServicePack 1以降、ContentSourceを "Abc"に設定すると、ContentStringFormatプロパティもAbcStringFormatにエイリアスされます。

このプロパティの2つの最も有用な値は、「Content」と「Header」です。

MSDN

ContentSourceどうやら便利のために一度により多くのプロパティを設定します。


実際には、宣言:

<ContentPresenter ContentSource="Header" />

以下の初期化を行います。

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

テンプレート化されたコントロールに依存関係プロパティが存在する場合にのみ、プロパティごとに個別にこれを行います。

于 2011-04-08T20:08:15.413 に答える