私は現在、他のコントロールテンプレートでテンプレートを再利用する方法を理解しようとしています(タイトルが示すように)。私がやろうとしているのは、すべてわずかに異なるが、いくつかの類似した機能を備えたボタンの束を作成することです。それらはすべて同じグラフィック要素のいくつかを共有し、それらのグラフィック要素を処理する同じトリガーを持っています。私が望んでいるのは、そのコードを取り出して別のテンプレートに入れ、すべてのボタンがそのテンプレートを参照できるようにすることです。そうすれば、管理が簡単になり、全体的に意味がわかります。方法はあると思いますが、WPFはまだ少し新しいです。助けてくれてありがとう!
編集:これが私がやりたいことを示すいくつかのコードです。
<ControlTemplate x:Key="LeftJustifyButtonTemplate" TargetType="{x:Type RadioButton}">
<Grid Width="24" Height="24">
<Rectangle HorizontalAlignment="Stretch" Fill="#00000000" Stroke="{x:Null}"/>
<Rectangle x:Name="backRectangle" HorizontalAlignment="Stretch" Margin="0,0,0,0" Stroke="#FFB9B9B9" StrokeThickness="0.5" RadiusX="4" RadiusY="4" Visibility="Hidden">
<Rectangle.Fill>
<LinearGradientBrush EndPoint="0.146,0.146" StartPoint="2.057,2.057">
<GradientStop Color="#FF000000" Offset="0"/>
<GradientStop Color="#FFFFFFFF" Offset="1"/>
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
<Rectangle x:Name="foreRectangle" Margin="1,1,1,1" VerticalAlignment="Stretch" Fill="#FFE0E0E0" Stroke="{x:Null}" StrokeThickness="0.5" RadiusX="4" RadiusY="4" Visibility="Hidden"/>
<Path Margin="2.875,7,2.875,0" Fill="#FFFFFFFF" Stretch="Fill" Stroke="#FF000000" Data="M2.875,7.5 L21.145964,7.5" VerticalAlignment="Top" Height="1" StrokeThickness="0.5"/>
<Path Margin="2.875,9.375,8,0" VerticalAlignment="Top" Height="1" Fill="#FFFFFFFF" Stretch="Fill" Stroke="#FF000000" Data="M3.625,4 L17.514069,4" StrokeThickness="0.5"/>
<Path Margin="2.875,11.5,2.875,11.5" Fill="#FFFFFFFF" Stretch="Fill" Stroke="#FF000000" Data="M2.875,7.5 L21.145964,7.5" StrokeThickness="0.5"/>
<Path Margin="2.875,0,8,9.375" VerticalAlignment="Bottom" Fill="#FFFFFFFF" Stretch="Fill" Stroke="#FF000000" Data="M3.625,4 L17.514069,4" Height="1" StrokeThickness="0.5"/>
<Path Margin="2.875,0,2.875,7" Fill="#FFFFFFFF" Stretch="Fill" Stroke="#FF000000" Data="M2.875,7.5 L21.145964,7.5" VerticalAlignment="Bottom" Height="1" StrokeThickness="0.5"/>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="backRectangle" Property="Visibility" Value="Visible"/>
<Setter TargetName="foreRectangle" Property="Visibility" Value="Visible"/>
</Trigger>
<Trigger Property="IsChecked" Value="True">
<Setter TargetName="backRectangle" Property="Visibility" Value="Visible"/>
<Setter TargetName="foreRectangle" Property="Visibility" Value="Visible"/>
<Setter TargetName="foreRectangle" Property="Fill" Value="#FFFFFFFF"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
中央の5つのパスを除いて、そのほとんどすべてがいくつかのボタンで使用されています。これは、マウスオーバーとチェックされたトリガーに使用されるためです。私がやりたいのは、そのコードをすべて1つの場所に配置してから、いくつかのボタンでそのコードを参照できるようにすることです。