#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 логический фокус и захват мыши, и нажата ли левая кнопка мыши.