1
我有一個組合框,並且模板化了它的控件模板。 Togglebutton是控件模板的一部分。現在,當togglebutton(ex:Checked)引發事件時,我想更改組合框屬性(例如:Foreground)。這個怎麼做?我們可以使用relativesource來做到這一點嗎?如何使用模板子模板上的觸發器更改祖先的屬性
我有一個組合框,並且模板化了它的控件模板。 Togglebutton是控件模板的一部分。現在,當togglebutton(ex:Checked)引發事件時,我想更改組合框屬性(例如:Foreground)。這個怎麼做?我們可以使用relativesource來做到這一點嗎?如何使用模板子模板上的觸發器更改祖先的屬性
您可以在ControlTemplate
中使用Trigger
,並使用Trigger.SourceName
屬性將ToggleButton
指定爲觸發源。
例子:
<ControlTemplate ... >
<Grid ... >
<!-- ... -->
<ToggleButton x:Name="btnToggle" ... />
<!-- ... -->
</Grid>
<ControlTemplate.Triggers>
<Trigger SourceName="btnToggle" Property="IsChecked" Value="True">
<Setter Property="Foreground" Value="Red" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
當然,這僅適用於性能,而不是事件,你的要求。但是,可以使用許多屬性代替事件,如IsChecked
屬性而不是Checked
事件。
欣賞你的答案。但是當它觸發時,我希望Combobox的屬性被改變(像不透明或前景)而不是togglebutton的屬性。無論如何,從togglebutton引用組合框? – funwithcoding 2010-10-14 04:14:42
其實,我認爲上面的代碼會將ComboBox的'Foreground'設置爲'Red'而不是'ToggleButton'。 *您是否嘗試過代碼?*通常,如果您在「設置器」中未指定「TargetName」,則將其應用於模板化控件,本例中爲「ComboBox」。但是,如果使用'Trigger'的'SourceName'屬性,這可能不會成立。但是,如果你還沒有這樣做,你還是應該試一試! – gehho 2010-10-14 05:46:19