在模板中,当Path是ContentPresenter时,我可以进行触发器更改Path.Fill吗?

时间:2012-06-04 21:20:46

标签: wpf templates contentpresenter

我有一个按钮模板,其中ContentPresenter实际上是一个路径。

在MouseOver上,我想更改Path.Fill。

参见模板:

    <Style x:Key="spinButtonStyle" TargetType="{x:Type RepeatButton}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type RepeatButton}">
                    <Border x:Name="Bd" BorderThickness="0" Background="Transparent" CornerRadius="2">
                        <ContentPresenter HorizontalAlignment="Stretch" VerticalAlignment="Stretch" />
                    </Border>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsMouseOver" Value="True">
                            <Setter Property="Background" TargetName="Bd" Value="#666666"/>
                            <Setter Property="Control.Foreground" Value="#999999"/>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

使用此模板的代码:

<RepeatButton Style="{StaticResource spinButtonStyle}">
    <Path blah blah blah/>
</RepeatButton>

现在,在这种情况下,ContentPresenter是一个Path。有没有办法改变XAML中的Path.Fill颜色?

1 个答案:

答案 0 :(得分:3)

您现在需要做的就是将Path Fill属性绑定到RepeatButton Foreground属性:

Fill="{Binding Path=Foreground, RelativeSource={RelativeSource AncestorType={x:Type RepeatButton}}}"