2010-10-18 13 views
5

Ich habe zwei DataTemplates für verschiedene Zellen in meinem Treelistview-Steuerelement. Die Vorlagen sind zu 90% ähnlich. Wie kann ich das identische Xaml wiederverwenden?Wiederverwendung von DataTemplate

<DataTemplate x:Key="@names"> 
      <TextBlock Name="txt" Text="{Binding Names}" Style="{DynamicResource @BasicTextBlockStyle}" 
        Foreground="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Border},AncestorLevel=1}, Path=BorderBrush,Mode=OneWay}" /> 
      <DataTemplate.Triggers> 
       <DataTrigger Binding="{Binding IsVisible}" Value="True"> 
        <Setter Property="Style" Value="{DynamicResource @HeaderTextBlockStyle}" TargetName="txt" /> 
       </DataTrigger> 
       <DataTrigger Binding="{Binding IsScoped}" Value="True"> 
        <Setter Property="Style" Value="{DynamicResource @RootElementTextBlockStyle}" TargetName="txt" /> 
       </DataTrigger> 
      </DataTemplate.Triggers> 
     </DataTemplate> 

     <DataTemplate x:Key="@Ages"> 
      <TextBlock Name="txt" Text="{Binding Age}" Style="{DynamicResource @BasicTextBlockStyle}" 
        Foreground="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Border},AncestorLevel=1}, Path=BorderBrush,Mode=OneWay}" /> 
      <DataTemplate.Triggers> 
       <DataTrigger Binding="{Binding IsVisible}" Value="True"> 
        <Setter Property="Style" Value="{DynamicResource @HeaderTextBlockStyle}" TargetName="txt" /> 
       </DataTrigger> 
       <DataTrigger Binding="{Binding IsScoped}" Value="True"> 
        <Setter Property="Style" Value="{DynamicResource @RootElementTextBlockStyle}" TargetName="txt" /> 
       </DataTrigger> 
      </DataTemplate.Triggers> 
     </DataTemplate> 

Antwort

6

können Sie versuchen, so etwas wie dies zu tun:

<DataTemplate x:Key="Inner"> 
    <TextBlock Name="txt" Text="{Binding}" Style="{DynamicResource @BasicTextBlockStyle}" 
      Foreground="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Border},AncestorLevel=1}, Path=BorderBrush,Mode=OneWay}" /> 
    <DataTemplate.Triggers> 
     <DataTrigger Binding="{Binding IsVisible}" Value="True"> 
      <Setter Property="Style" Value="{DynamicResource @HeaderTextBlockStyle}" TargetName="txt" /> 
     </DataTrigger> 
     <DataTrigger Binding="{Binding IsScoped}" Value="True"> 
      <Setter Property="Style" Value="{DynamicResource @RootElementTextBlockStyle}" TargetName="txt" /> 
     </DataTrigger> 
    </DataTemplate.Triggers> 
</DataTemplate> 

<DataTemplate x:Key="Names"> 
    <Border BorderBrush="Black" BorderThickness="1" Height="100" Width="100" HorizontalAlignment="Left"> 
     <ContentPresenter Content="{Binding Names}" ContentTemplate="{StaticResource Inner}" /> 
    </Border> 
</DataTemplate> 

<DataTemplate x:Key="Ages"> 
    <Border BorderBrush="Black" BorderThickness="1" Height="100" Width="100" HorizontalAlignment="Right"> 
     <ContentPresenter Content="{Binding Ages}" ContentTemplate="{StaticResource Inner}" /> 
    </Border> 
</DataTemplate> 
+0

Nette Idee, aber es zwingt mich unnötig Grenze Hexe, die ich von zu vermeiden, bevorzugen hinzuzufügen. – Erez

+0

Die Grenze wird nicht benötigt ... – mdm20

Verwandte Themen