Как я могу использовать свойство IsPressed в ControlTemplate of Thumb?

#wpf

#wpf

Вопрос:

Я хочу переписать ControlTemplate большого пальца.

Вот код:

 <ControlTemplate x:Key="123" TargetType="Thumb">
    <Border Name="B"></Border>
    <ControlTemplate.Triggers>
        <Trigger Property="IsPressed" Value="true">
            <Setter Property="Background" TargetName="B" Value="#575757"/>
        </Trigger>
        <Trigger Property="IsMouseOver" Value="true">
            <Setter Property="Background" TargetName="B" Value="Red"/>
        </Trigger>
    </ControlTemplate.Triggers>
</ControlTemplate>
  

Однако VS 2019 RC1 сообщает об ошибке:
введите описание изображения здесь

Так странно, что с IsMouseOver все в порядке, но IsPressed сообщает об ошибке.

Я нашел официальный шаблон Microsoft, как показано ниже:https://learn.microsoft.com/en-us/dotnet/framework/wpf/controls/thumb-styles-and-templates

Но официальный шаблон теперь использует VisualState, но не триггер.

Я хочу узнать, как я могу использовать свойство IsPressed с помощью триггеров.

Может быть, вы спросите меня, почему я не использую VisualState? Я написал несколько пользовательских элементов управления в проекте, я не хочу, чтобы что-то использовало VisualState, а что-то — триггер, это такая путаница. Я просто хочу, чтобы все были триггерами.

Спасибо.

Комментарии:

1. У Thumb нет свойства IsPressed?

2. Но, как сказано в официальном шаблоне Microsoft, в визуальном состоянии есть свойство press, я думаю, что в trigger также есть свойство press.

Ответ №1:

Thumb не имеет IsPressed свойства в соответствии с документами

Вы можете использовать другие свойства, такие как isDragging

Возвращает, имеет ли элемент управления Thumb логический фокус и захват мыши, и нажата ли левая кнопка мыши.