我有一个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。我该如何解决这个问题?
答案 0 :(得分:0)
试试这个,我遇到了类似的问题,因为我错过了属性关键字。希望它适用于您的情况。
Content={TemplateBinding Property=DataContext}
答案 1 :(得分:0)
如果您使用ContentControl而不是ContentPresenter,则可以使用。