Имеют ли одиночные триггеры более высокий приоритет для мультитриггеров с одинаковыми условиями в WPF?
У меня есть TabControl в моем окне. поэтому я написал стиль для него, как следующие коды.
В моих кодах есть триггер (я использовал мультитриггер после триггера!):
- Первый ---->> Триггер с условием IsSelected=True
- Второй >> Multi Trigger с IsSelected=True условие
Мои тесты:
Я хочу использовать второй (мультитриггер) с условием 2 (IsSelected=True + IsMouseOver=True), но я вижу, что его эффект будет показан только тогда, когда я прокомментирую один триггер!!
Поэтому я прокомментировал условие IsMouseOver = True в мультитриггере и протестировал его снова, НО результат был таким же, как был раньше >> Эффект просто показывает, когда комментируется один триггер
Также я поместил одиночный триггер вниз и Multitrigger вверх, а затем протестировал его, НО результат был таким же, как был раньше >> Эффект просто показывает, когда комментируется одиночный триггер
Теперь мой вопрос:
В моих кодах есть ошибки?
Является ли в WPF одиночные триггеры приоритетными для мульти-триггеров с одинаковыми условиями?
Причина в другом....
Как я могу решить эту проблему?
,
<Style TargetType="TabControl">
<Style.Resources>
<Style TargetType="{x:Type TabItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TabItem}">
<Border x:Name="TabItemBorder"...........
<Border.Background>
<LinearGradientBrush x:Name="TabControlBorderLinearGradientBrush"........
<GradientStop Color="#FF999999"....
<GradientStop Color="#FF999999"....
<GradientStop Color="#FFa3a3a3"....
</LinearGradientBrush>
</Border.Background>
<ContentPresenter x:Name="ContentSite".....
</Border>
<ControlTemplate.Triggers>
<- Первый одиночный триггер ->:
<Trigger Property="IsSelected" Value="True">
<Setter TargetName="TabItemBorder" Property="Background">
<Setter.Value>
<LinearGradientBrush......
<GradientStop Color="#FF9D6AC6".....
<GradientStop Color="#FF9D6AC6".....
<GradientStop Color="#FFA776CF".....
</LinearGradientBrush>
</Setter.Value>
</Setter>
</Trigger>
<- Второй мульти триггер ->:
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsSelected" Value="True"/>
<!--<Condition SourceName="TabItemBorder" Property="IsMouseOver" Value="true"/>-->
</MultiTrigger.Conditions>
<MultiTrigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<ColorAnimation Storyboard.TargetName="TabControlBorderLinearGradientBrush" Storyboard.TargetProperty = "(LinearGradientBrush.GradientStops)[0].(GradientStop.Color)"
To="#FFaD6AC6"....
<ColorAnimation Storyboard.TargetName="TabControlBorderLinearGradientBrush" Storyboard.TargetProperty = "(LinearGradientBrush.GradientStops)[1].(GradientStop.Color)"
To="#FFaD6AC6"....
<ColorAnimation Storyboard.TargetName="TabControlBorderLinearGradientBrush" Storyboard.TargetProperty = "(LinearGradientBrush.GradientStops)[2].(GradientStop.Color)"
To="#FFb776CF"....
</Storyboard>
</BeginStoryboard>
</MultiTrigger.EnterActions>
<MultiTrigger.ExitActions>
<BeginStoryboard>
<Storyboard>
<ColorAnimation Storyboard.TargetName="TabControlBorderLinearGradientBrush" Storyboard.TargetProperty = "(LinearGradientBrush.GradientStops)[0].(GradientStop.Color)"
To="#FF9D6AC6"....
<ColorAnimation Storyboard.TargetName="TabControlBorderLinearGradientBrush" Storyboard.TargetProperty = "(LinearGradientBrush.GradientStops)[1].(GradientStop.Color)"
To="#FF9D6AC6"....
<ColorAnimation Storyboard.TargetName="TabControlBorderLinearGradientBrush" Storyboard.TargetProperty = "(LinearGradientBrush.GradientStops)[2].(GradientStop.Color)"
To="#FFA776CF"....
</Storyboard>
</BeginStoryboard>
</MultiTrigger.ExitActions>
</MultiTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Style.Resources>
РЕДАКТИРОВАТЬ:
Обратите внимание:
Внутри Trigger я меняю фон TabItemBorder с помощью этого метода:
<Setter TargetName="TabItemBorder" Property="Background">
<Setter.Value>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FF9D6AC6" Offset="0"/>
<GradientStop Color="#FF9D6AC6" Offset="0.584"/>
<GradientStop Color="#FFA776CF" Offset="0.571"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
и внутри Multi Trigger я изменяю фон TabControlBorderLinearGradientBrush с помощью этого метода:
<BeginStoryboard>
<Storyboard>
<ColorAnimation Storyboard.TargetName="TabControlBorderLinearGradientBrush" Storyboard.TargetProperty = "(LinearGradientBrush.GradientStops)[0].(GradientStop.Color)"
To="#FFaD6AC6" Duration="0:0:0.2"/>
<ColorAnimation Storyboard.TargetName="TabControlBorderLinearGradientBrush" Storyboard.TargetProperty = "(LinearGradientBrush.GradientStops)[1].(GradientStop.Color)"
To="#FFaD6AC6" Duration="0:0:0.2"/>
<ColorAnimation Storyboard.TargetName="TabControlBorderLinearGradientBrush" Storyboard.TargetProperty = "(LinearGradientBrush.GradientStops)[2].(GradientStop.Color)"
To="#FFb776CF" Duration="0:0:0.2"/>
</Storyboard>
</BeginStoryboard>
а TabControlBorderLinearGradientBrush является LinearGradientBrush для свойства фона TabItemBorder