我有一個ControlTemplate,它在多個元素中使用相同的顏色。在某些觸發器(例如OnMouseOver)上,我想更改該顏色。據我所見,我必須爲每個元素定義一個setter來改變它的顏色。有沒有辦法引用模板中的所有包含元素都可以訪問的共享資源,哪些可以通過觸發器進行更改,因此我不必處理每個元素?更改ControlTemplate中的常見顏色
下面是一個(由)例如:
<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>
但同時設置了橢圓的顏色只有一個制定者。
這樣做最簡單的方法,謝謝。 (儘管我必須弄清楚,你不能在ControlTemplate中定義顏色,而只能在樣式中定義顏色。) – 2009-08-09 07:53:33
謝謝 - 正是我需要的語法 – 2010-05-10 15:24:52