3

データ テンプレートとデータ テンプレート セレクターを使用して、表示用にさまざまなコンテンツのスタイルを設定する 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 になることです。どうすればこの問題を解決できますか?

4

2 に答える 2

0

ContentPresenter の代わりに ContentControl を使用すると機能します。

于 2016-02-27T19:41:22.310 に答える