2010-10-18 12 views
5

Ho due DataTemplate per celle diverse nel controllo Treelistview. i modelli sono simili al 90%. Come posso riutilizzare lo XAML identico?Riutilizzo del 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> 

risposta

6

Si può provare a fare qualcosa di simile:

<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

bella idea, ma mi sta costringendo aggiungere strega confine inutili preferisco evitare da. – Erez

+0

Il bordo non è richiesto ... – mdm20