データ テンプレートとデータ テンプレート セレクターを使用して、表示用にさまざまなコンテンツのスタイルを設定する Windows ストア アプリケーションがあります。
パラメータに基づいてテンプレートを返す TemplateSelector があります。このテンプレートは、それ自体が TemplateSelector を持つ contentpresenter も使用します。
この方法で内部の TemplateSelector を呼び出してみました:
<DataTemplate x:Key="Template1">
<Grid>
<Border Background="{StaticResource ApplicationBackgroundBrush}">
<Grid>
<ContentPresenter Content="{TemplateBinding DataContext}">
<ContentPresenter.ContentTemplateSelector>
<my:MyTemplateSelector />
</ContentPresenter.ContentTemplateSelector>
</ContentPresenter>
</Grid>
</Border>
</Grid>
TemplateBinding を使用すると、DataContext プロパティが見つからないという例外が発生します (文字列から DependencyProperty を作成することはできません)。
私の最初の試みはこれでした:
<DataTemplate x:Key="Template2">
<Grid>
<Border Background="{StaticResource ApplicationBackgroundBrush}">
<Grid>
<ContentPresenter Content="{Binding DataContext}">
<ContentPresenter.ContentTemplateSelector>
<my:MyTemplateSelector />
</ContentPresenter.ContentTemplateSelector>
</ContentPresenter>
</Grid>
</Border>
</Grid>
これに関する問題は、TemplateSelector が呼び出されたときに Content と DataContext が null になることです。どうすればこの問題を解決できますか?