Можно ли в шаблоне изменить триггер Path.Fill, если Path является 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. Есть ли способ изменить цвет Path.Fill в XAML?


person Grant Birchmeier    schedule 04.06.2012    source источник


Ответы (1)


Все, что вам нужно сделать сейчас, это привязать свойство Path Fill к вашему свойству RepeatButton Foreground:

Fill="{Binding Path=Foreground, RelativeSource={RelativeSource AncestorType={x:Type RepeatButton}}}"
person Andrei Gavrila    schedule 05.06.2012
comment
В итоге я провел рефакторинг, чтобы это могло быть два разных стиля, но я думаю, что ваше решение сработало бы так же хорошо. Хотел бы я увидеть это раньше. Спасибо! - person Grant Birchmeier; 13.06.2012