WPF repeatbutton на полосе прокрутки только инициировал IsPressed из шаблона, не стиль

У меня есть незначительная проблема. Мы хотели бы поместить столько же стилистические объекты в стилях и за пределами шаблонов управления, сделать themeing легче. Таким образом для repeatbutton полосы прокрутки, я могу заставить все это работать, но IsPressed. Тот единственные работы из шаблона.

Таким образом, шаблон (в основном):

    <ControlTemplate x:Key="ScrollBarButtonCT" TargetType="{x:Type RepeatButton}">
    <Border 
        x:Name="borderRepeatButton"
        Margin="1" 
        CornerRadius="2" 
        Background="{TemplateBinding Background}">
        <Path x:Name="pathArrow"
            HorizontalAlignment="Center"
            VerticalAlignment="Center"
            Fill="{DynamicResource ThumbBrush}"
            Data="{Binding Content, RelativeSource={RelativeSource TemplatedParent}}" />
    </Border>
    <ControlTemplate.Triggers>
        <Trigger Property="IsPressed" Value="true">
            <Setter TargetName="borderRepeatButton" Property="Background" Value="{DynamicResource ThumbPressedBrush}" />
        </Trigger>
    </ControlTemplate.Triggers>
</ControlTemplate>

И стиль

    <Style x:Key="ScrollBarButtonStyle" TargetType="{x:Type RepeatButton}">
    <Setter Property="OverridesDefaultStyle" Value="true"/>
    <Setter Property="Focusable" Value="false"/>
    <Setter Property="IsTabStop" Value="false"/>
    <Setter Property="Background" Value="{DynamicResource ScrollBarBGBrush}"/> <!-- borderRepeatButton -->
    <Setter Property="OpacityMask" Value="{DynamicResource ThumbBrush}"/> <!-- pathArrow-->
    <Setter Property="Template" Value="{StaticResource ScrollBarButtonCT}"/>
    <Style.Triggers>
        <!--<Trigger Property="IsPressed" Value="true">  .... this doesn't work coming from the style
            <Setter Property="Background" Value="{DynamicResource ThumbPressedBrush}" />
        </Trigger>-->
        <Trigger Property="IsEnabled" Value="false">
            <Setter Property="Foreground" Value="{DynamicResource ScrollBarDisabledBGBrush}"/>
        </Trigger>
        <Trigger Property="IsMouseOver" Value="true">
            <Setter Property="Background" Value="{DynamicResource ThumbHoverBrush}"/>
        </Trigger>
    </Style.Triggers>
</Style>

Я не могу заставить IsPressed работать от стиля. При взгляде в Ищейке IsPressed повышен очень хорошо при использовании управления. Что я делаю неправильно?Спасибо!

1
задан akjoshi 23 November 2011 в 09:39
поделиться

1 ответ

Понятия не имею, почему он не работает, может быть, ему нужен статический ресурс? Вы можете попробовать это, чтобы собрать все стили в одном месте.

    <Style x:Key="xxxtyle" TargetType="{x:Type Button}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type Button}">
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsPressed" Value="True">
                            <Setter Property="Fill" TargetName="rectangle" Value="#FFD5D5D5"/>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

ps TargetType = "typeName" == TargetType = "{x: Type typename}"

1
ответ дан 2 September 2019 в 22:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: