2010-10-18 12 views
5

मेरे ट्रेलीस्टव्यू नियंत्रण में विभिन्न कक्षों के लिए मेरे पास दो डेटा टेम्पलेट हैं। टेम्पलेट्स 90% समान हैं। मैं समान Xaml का पुन: उपयोग कैसे कर सकता हूं?डेटा टेम्पलेट का पुन: उपयोग

<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> 

उत्तर

6

आप कुछ इस तरह कर रही कोशिश कर सकते हैं:

<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

अच्छा विचार है, लेकिन यह अनावश्यक सीमा डायन मैं से बचने के लिए पसंद करते हैं जोड़ने के लिए मुझे मजबूर कर रहा है। – Erez

+0

सीमा की आवश्यकता नहीं है ... – mdm20

संबंधित मुद्दे