2011-09-28 74 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>