複数の要素で同じ色を使用するControlTemplateがあります。特定のトリガー(OnMouseOverなど)で、その色を変更したいと思います。私が見る限り、色を変更するには、すべての要素にセッターを定義する必要があります。含まれているすべての要素がアクセスでき、トリガーによって変更できる共有リソースをテンプレートで参照する方法はありますか?したがって、すべての要素に対処する必要はありませんか?
これが(作り上げられた)例です:
<ControlTemplate x:Key="myTemplate" TargetType="{x:Type Button}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Ellipse Fill="red" Grid.Column="0"/>
<Ellipse Fill="red" Grid.Column="1"/>
<ContentPresenter Grid.ColumnSpan="2" VerticalAlignment="Center"/>
</Grid>
</ControlTemplate>
コントロールが無効になっている場合、両方を明示的に設定せずに、省略記号を灰色にします。たとえば、書きたくない
<Trigger Property="IsEnabled" Value="False">
<Setter TargetName="_ellipse1" Property="Fill" Value="Grey"/>
<Setter TargetName="_ellipse2" Property="Fill" Value="Grey"/>
</Trigger>
ただし、 1つのセッターで両方の楕円の色を設定します。