2011-10-17 70 views
0

我想基于绑定值应用ContentTemplate。问题是,它不工作。如何使用DataTrigger应用DataTemplate样式

我有一个名为TemplateA的默认模板,然后我希望显示基于数据绑定值的样式 - 可以是TemplateA或TemplateB。

如果我注释掉默认模板,则不会选择模板。

我检查了我的数据绑定值,数值没问题。

你能看到我要去哪里吗?

这里是ListDataView

<CollectionViewSource x:Key="ListDataView" /> 

它位于窗口的资源部分中,ListDataView连接到内码一个ObservableCollection。

<DataTemplate x:Key="TemplateA"> 
    <TextBlock Text="Template A" /> 
</DataTemplate> 

<DataTemplate x:Key="TemplateB"> 
    <TextBlock Text="Template B" /> 
</DataTemplate> 

    <ContentControl x:Name="LISTINGCONTROLA"> 
    <ContentControl.Style> 
     <Style TargetType="{x:Type ContentControl}"> 
      <Setter Property="ContentTemplate" Value="{StaticResource TemplateA}" /> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding Source={StaticResource ListDataView}, Path=ListType}" Value="TEMPLATEA"> 
        <Setter Property="ContentTemplate" Value="{StaticResource TemplateA}" /> 
       </DataTrigger> 
       <DataTrigger Binding="{Binding Source={StaticResource ListDataView}, Path=ListType}" Value="TEMPLATEB"> 
        <Setter Property="ContentTemplate" Value="{StaticResource TemplateB}" /> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </ContentControl.Style> 
</ContentControl> 
+0

您是否也可以包含模板的定义? – 2011-10-17 12:59:27

+0

添加2个模板 – Ben 2011-10-17 13:20:42

回答

1

使用WPF DataTemplateSelector可能是帮助 ​​

1

的问题很可能是因为您的绑定指向上CollectionViewSource本身的属性,以及类没有属性命名ListType所以没有值绑定(因此默认总是被使用)。

您试图绑定的ListType属性在哪里?

相关问题