我遇到的问题与此处描述的相同: ContentTemplateSelector is only called one time showing always the same datatemplate
我尝试过与Simon Weaver建议相同的解决方案(尽管他的答案有点缩写,所以我猜它看起来如下):
<ContentControl >
<Style>
<Style.Triggers>
<DataTrigger Binding="{Binding Path=IsSelected}" Value="true">
<Setter Value="{StaticResource SelectedDataTemplate}" Property="ContentControl.ContentTemplate"></Setter>
</DataTrigger>
<DataTrigger Binding="{Binding Path=IsSelected}" Value="false">
<Setter Value="{StaticResource UnSelectedDataTemplate}" Property="ContentControl.ContentTemplate">
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</ContentControl>
然而,当我运行它时,我只是在我的内容控件中显示'System.Windows.Style'。 顺便说一句,我(有点)使用重写的DataTemplateSelector类使它工作,但问题是选择器只在启动时得到评估。我需要基于数据绑定IsSelected属性的这种切换行为 - 我希望上面的代码段实现。 BTW实际的数据模板本身只包含UI内容 - 没有数据触发等,所以我不在我的帖子中包含它们。
答案 0 :(得分:4)
您的ContentControl将Content
设置为Style
,因为您错过了ContentControl.Style
代码。
<ContentControl>
<ContentControl.Style>
<Style TargetType="{x:Type ContentControl}">
<Setter Value="{StaticResource UnSelectedDataTemplate}" Property="ContentTemplate" />
<Style.Triggers>
<DataTrigger Binding="{Binding Path=IsSelected}" Value="True">
<Setter Value="{StaticResource SelectedDataTemplate}" Property="ContentTemplate" />
</DataTrigger>
</Style.Triggers>
</Style>
</ContentContro.Style>
</ContentControl>