2011-09-28 79 views
1

我有3個不同的佈局(類似於我猜你會稱爲皮膚,但佈局是巨大不同的,不僅僅是顏色和字體的變化),這是我爲我的應用程序開發的。佈局用於顯示相同的數據,但採用完全不同的格式。這些佈局中的每一個都是在他們自己的網格中構建的。動態顯示網格內容

我希望我的應用程序根據運行時可用的字符串值動態決定要顯示哪個佈局。

讓父母網格動態顯示子網格的最佳方式是什麼?

我想找到某種神奇的DataTemplate/DataBinding/Templating方法,但似乎無法找到最佳方法。或者,我應該看看不同的顯示這些不同佈局的方法嗎?像一個ItemsControl或類似的?

回答

1

我通常使用ContentControl和DataTrigger來確定使用哪個ContentTemplate。

例如,

<ContentControl Content="{Binding MyViewModel}"> 

    <ContentControl.Resources> 
     <DataTemplate x:Key="DefaultTemplate"> 
      <TextBlock Text="DefaultTemplate" /> 
     </DataTemplate> 

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

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

    <ContentControl.Style> 
     <Style TargetType="{x:Type ContentControl}"> 
      <Setter Property="ContentTemplate" Value="{StaticResource DefaultTemplate}" /> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding SelectedView}" Value="ViewA"> 
        <Setter Property="ContentTemplate" Value="{StaticResource TemplateA}" /> 
       </DataTrigger> 
       <DataTrigger Binding="{Binding SelectedView}" Value="ViewB"> 
        <Setter Property="ContentTemplate" Value="{StaticResource TemplateB}" /> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </ContentControl.Style> 

</ContentControl>