0
私は別のControlTemplateからControlTemplateを使用するにはどうすればよいですか?
<!-- DERIVED1 - DERIVES FROM 'MOST BASE' -->
<ControlTemplate TargetType="ContentControl" x:Key="Derived1WidgetControlTemplate">
<GroupBox Style="{StaticResource WidgetControlTemplateStyle}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseLeftButtonDown">
<i:InvokeCommandAction Command="{Binding ExpandCommand}" />
</i:EventTrigger>
</i:Interaction.Triggers>
<DockPanel>
<!-- Some additional controls go here ... -->
<Label Content="Blah blah" />
<DockPanel>
<!-- Content ... -->
<ContentPresenter />
</DockPanel>
</DockPanel>
</GroupBox>
</ControlTemplate>
<!-- MOST BASE -->
<ControlTemplate TargetType="ContentControl" x:Key="WidgetControlTemplate">
<GroupBox Style="{StaticResource WidgetControlTemplateStyle}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseLeftButtonDown">
<i:InvokeCommandAction Command="{Binding ExpandCommand}" />
</i:EventTrigger>
</i:Interaction.Triggers>
<DockPanel>
<!-- Content ... -->
<ContentPresenter />
</DockPanel>
</GroupBox>
</ControlTemplate>
は明らかに2つのテンプレートがほとんど同じであります。繰り返す断片を取り除くために私は何ができますか?
これらを単一のControlTemplate
にマージして、依存関係プロパティまたは添付プロパティを渡すことはオプションではありません。2つの区別可能なコントロールテンプレートが必要です。
このインタラクショントリガーは再利用するのが簡単ではありません。私が知る唯一の方法は、このケースのGroupBoxであなた自身のコントロールを作成し、それにスティックすることです。その後、この新しいコントロールを使用するたびに、これがその一部になります。ドックパネルと同様。あなたはいつも鍵付きの2つのドックパネルを持ち、与えられた状況で必要なものを使います。 – adminSoftDK