如何使用模板子项上的触发器更改祖先的属性

时间:2010-10-13 04:37:48

标签: wpf xaml binding

我有一个组合框,我已经模板化了它的控制模板。 Togglebutton是控件模板的一部分。现在当在togglebutton(ex:Checked)上引发一个事件时,我想改变组合框属性(例如:前景)。这该怎么做?我们可以使用relativesource吗?

1 个答案:

答案 0 :(得分:1)

您可以使用Trigger中的ControlTemplate并使用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事件。