DataContext中的ContentTemplateSelector的ContentPresenter = NULL上下文?

时间:2012-11-22 13:12:28

标签: c# windows-8 windows-runtime windows-store-apps

我有一个Windows应用商店应用程序,它使用datatemplates和datatemplateselectors来设置各种内容的样式以供显示。

我有一个TemplateSelector,它根据参数返回一个Template。此模板还使用contentpresenter,它本身具有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为null。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

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

Content={TemplateBinding Property=DataContext}

答案 1 :(得分:0)

如果您使用ContentControl而不是ContentPresenter,则可以使用。