2011-10-17 42 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屬性在哪裏?

相關問題