2016-07-24 6 views
2

Я определяю стиль для WPF TabControlTabItem. Я хочу показать небольшое нажатие на TabItem, когда мышь (левая кнопка) нажата, и TabItem не выбран, но я не могу найти Trigger для этого.WPF TabItem стиль, когда мышь левая кнопка вниз

Я попытался определить MultiTrigger с IsMouseLeftButtonDown и IsPressed свойствами, но ни один из них не признан.

<Style TargetType="{x:Type TabItem}"> 
     <Setter Property="Template"> 
      <Setter.Value> 
        <ControlTemplate TargetType="TabItem"> 
         <Border Name="bd" BorderThickness="1,1,0,0"> 
          <Grid> 
           <ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Center" 
                ContentSource="Header"/>  
          </Grid> 
         </Border> 
         <ControlTemplate.Triggers> 
          <MultiTrigger> 
           <MultiTrigger.Conditions> 
            <Condition Property="IsMouseLeftButtonDown" Value="True" /> <!--NOT RECOGNIZED--> 
            <Condition Property="IsSelected" Value="False" /> 
           </MultiTrigger.Conditions> 
           <Setter TargetName="bd" Property="Background" > 
            <Setter.Value> 
             <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
               <GradientStop Color="Green" Offset="0"/> 
               <GradientStop Color="Yellow" Offset="1"/> 
             </LinearGradientBrush> 
            </Setter.Value> 
           </Setter> 
          </MultiTrigger> 
         </ControlTemplate.Triggers> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
</Style> 

Как установить Trigger, который получает в действие, когда левая кнопка мыши нажата на TabItem?


EDIT

EventTrigger Я пытался, но я не вижу никакого эффекта с ниже

<EventTrigger RoutedEvent="UIElement.PreviewMouseLeftButtonDown"> 
    <BeginStoryboard> 
      <Storyboard> 
       <ColorAnimation Storyboard.TargetProperty="(Border.Background).(SolidColorBrush.Color)" To="Green" Duration="0:0:3" /> 
      </Storyboard> 
    <BeginStoryboard/> 
<EventTrigger/> 

Может ли это быть достигнуто таким образом, каким-то образом?

+0

Это не сработает. Если вы хотите прослушивать MouseAction, вам нужно использовать 'EventTrigger'. Eventriggers принимает только одно условие. Поэтому ваш 'IsSelected = False' не будет работать. Обходной путь может быть, используя 'IsMouseOver' вместо' IsMouseLeftButtonDown'. Это будет симулировать эффект Hover- – lokusking

+0

. Исходно IsMouseOver здесь, так как он дает эффект зависания. У меня это реализовано уже правильно. – Nuts

+0

Отредактировано сообщение для EventTrigger, но не может заставить его работать – Nuts

ответ

0

В этом примере показано, как работать с EventTriggers.

Примечание

Вы, возможно, придется установить Выделение цветом-Logic полностью в этих Triggers, поскольку значения переопределены каждый раз, то Trigger пожары.

<EventTrigger RoutedEvent="PreviewMouseDown" > 
    <EventTrigger.Actions> 
     <BeginStoryboard> 
      <Storyboard > 
       <ObjectAnimationUsingKeyFrames Storyboard.TargetName="bd" Storyboard.TargetProperty="Background" Duration="0:0:3" BeginTime="0" AutoReverse="True"> 
        <ObjectAnimationUsingKeyFrames.KeyFrames> 
         <DiscreteObjectKeyFrame KeyTime="0:0:0" Value="{x:Static Brushes.Green}" /> 
        </ObjectAnimationUsingKeyFrames.KeyFrames> 
       </ObjectAnimationUsingKeyFrames> 
      </Storyboard> 
     </BeginStoryboard> 
    </EventTrigger.Actions> 
</EventTrigger> 
<EventTrigger RoutedEvent="PreviewMouseUp" > 
    <EventTrigger.Actions> 
     <BeginStoryboard> 
      <Storyboard > 
       <ObjectAnimationUsingKeyFrames Storyboard.TargetName="bd" Storyboard.TargetProperty="Background" Duration="0:0:3" BeginTime="0" AutoReverse="True"> 
        <ObjectAnimationUsingKeyFrames.KeyFrames> 
         <DiscreteObjectKeyFrame KeyTime="0:0:0" Value="{x:Static Brushes.Transparent}" /> 
        </ObjectAnimationUsingKeyFrames.KeyFrames> 
       </ObjectAnimationUsingKeyFrames> 
      </Storyboard> 
     </BeginStoryboard> 
    </EventTrigger.Actions> 
</EventTrigger> 

 Смежные вопросы

  • Нет связанных вопросов^_^