2010-10-13 23 views

回答

1

您可以在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事件。

+0

欣赏你的答案。但是当它触发时,我希望Combobox的属性被改变(像不透明或前景)而不是togglebutton的属性。无论如何,从togglebutton引用组合框? – funwithcoding 2010-10-14 04:14:42

+0

其实,我认为上面的代码会将ComboBox的'Foreground'设置为'Red'而不是'ToggleButton'。 *您是否尝试过代码?*通常,如果您在“设置器”中未指定“TargetName”,则将其应用于模板化控件,本例中为“ComboBox”。但是,如果使用'Trigger'的'SourceName'属性,这可能不会成立。但是,如果你还没有这样做,你还是应该试一试! – gehho 2010-10-14 05:46:19