2010-10-29 56 views
2

我怎样才能将TabItem颜色从未选中的颜色更改为SelectedChanged上的动画选定的颜色,以便未选中和选定的TabItem都发生更改?WPF - SelectionChanged上的动画

编辑:这是我的CustomTemplate的样子。没有动画发生,所以我做错了什么?

<Style TargetType="TabItem"> 
     <Setter Property="IsEnabled" Value="False" /> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="TabItem"> 
        <Grid> 
         <Border BorderBrush="Transparent" BorderThickness="0" MinWidth="120"> 
          <StackPanel Orientation="Vertical"> 
           <ContentPresenter HorizontalAlignment="Center" ContentSource="Header" /> 
           <Ellipse Name="Ellipse" Stroke="Black" StrokeThickness="1" Width="24" Height="24" Margin="5" Fill="Transparent" /> 
          </StackPanel> 
         </Border> 
        </Grid> 
        <ControlTemplate.Triggers> 
         <MultiTrigger> 
          <MultiTrigger.Conditions> 
           <Condition Property="IsSelected" Value="True" /> 
           <Condition Property="Ellipse.Fill" Value="Transparent" /> 
          </MultiTrigger.Conditions> 
          <MultiTrigger.EnterActions> 
           <BeginStoryboard> 
            <Storyboard> 
             <ColorAnimation Storyboard.TargetName="Ellipse" Storyboard.TargetProperty="Fill" 
                 From="Transparent" To="Orange" Duration="0:0:1" /> 
            </Storyboard> 
           </BeginStoryboard> 
          </MultiTrigger.EnterActions> 
         </MultiTrigger> 
         <MultiTrigger> 
          <MultiTrigger.Conditions> 
           <Condition Property="IsSelected" Value="False" /> 
           <Condition Property="Ellipse.Fill" Value="Orange" /> 
          </MultiTrigger.Conditions> 
          <MultiTrigger.EnterActions> 
           <BeginStoryboard> 
            <Storyboard> 
             <ColorAnimation Storyboard.TargetName="Ellipse" Storyboard.TargetProperty="Fill" 
                 From="Orange" To="Transparent" Duration="0:0:1" /> 
            </Storyboard> 
           </BeginStoryboard> 
          </MultiTrigger.EnterActions> 
         </MultiTrigger> 
        </ControlTemplate.Triggers> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 

回答

0

您可以自定义的TabItem模板,并使用触发器运行的动画。

+0

是的,我试过了。唯一的问题是,当第一次加载TabControl时,TabItems未选择时的触发器将在未选中的所有TabItem上运行,这使得它们在应该什么都不做时会改变外观。 – 2010-10-29 08:46:03

+0

@Jova。尝试使用TabItem的Tag属性来指示是否已经选择了TabItem并使用MultiTriggers。 – 2010-10-29 08:54:52

+0

我已经添加了代码,以便您可以看到它。当我更改标签页时,没有动画正在发生。 – 2010-10-29 10:00:11