我有一个Windows应用商店应用程序,它使用数据模板和数据平台选择器来设置各种显示内容的样式。
我有一个返回基于参数的模板的TemplateSelector。这个模板还使用了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为空。我该如何解决这个问题?
发布于 2014-06-17 22:58:27
尝试一下,我遇到了类似的问题,因为我错过了Property关键字。希望它适用于你的情况。
Content={TemplateBinding Property=DataContext}发布于 2016-02-28 03:41:22
如果您使用ContentControl而不是ContentPresenter,它就可以工作。
https://stackoverflow.com/questions/13513480
复制相似问题