3

我有一个 Windows 应用商店应用程序,它使用数据模板和数据模板选择器来设置各种显示内容的样式。

我有一个 TemplateSelector,它返回一个基于参数的模板。这个模板还使用了一个内容展示器,它本身有一个模板选择器。

我曾尝试以这种方式调用内部 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 为空。我怎么解决这个问题?

4

2 回答 2

0

试试这个,我遇到了类似的问题,因为我错过了属性关键字。希望它适用于你的情况。

Content={TemplateBinding Property=DataContext}
于 2014-06-17T14:58:27.130 回答
0

如果您使用 ContentControl 而不是 ContentPresenter,它会起作用。

于 2016-02-27T19:41:22.310 回答