I have two DataTemplates for different cells in my Treelistview control. the templates are 90% similar. How can I reuse the identical 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>
You can try doing something like this:
<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>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With