为什么我的用户控件动画会在控件的所有实例上被触发?

时间:2014-01-28 18:52:02

标签: c# wpf xaml

所以在WPF项目中我刚刚开始我有一个UserControl,它最终将作为一种文档选项卡运行(我已经简化了这个问题的代码)。在UserControl上是一个TextBlock,所需的行为是当用户将鼠标悬停在控件上时,文本应该改变颜色。下面的XAML工作(在另一个文件中定义的资源)但是ColorAnimation发生在UserControl的每个实例上,而不仅仅是我将鼠标悬停在其上。因此,如果我将这些控件中的一些分散在UI上并将鼠标移动到其中一个上,则所有控件都会改变颜色。为什么???我已经尝试将触发器添加到UserControl,Grid和TextBlock本身,但它似乎没有区别。一如既往,感谢任何建议。

<UserControl x:Class="OurCompany.TabControl"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         mc:Ignorable="d" 
         Height="24" Width="Auto">
<UserControl.Resources>
    <Storyboard x:Key="MouseEnterFade">
        <ColorAnimation Storyboard.TargetName="TabTitleText" Storyboard.TargetProperty="Foreground.Color"
                        Duration="0:0:0.1"
                        To="{DynamicResource FrameBorderColor}"/>
    </Storyboard>
    <Storyboard x:Key="MouseLeaveFade">
        <ColorAnimation Storyboard.TargetName="TabTitleText" Storyboard.TargetProperty="Foreground.Color"
                        Duration="0:0:0.1"
                        To="{DynamicResource MenuForegroundColor}"/>
    </Storyboard>
</UserControl.Resources>
<UserControl.Triggers>
    <EventTrigger RoutedEvent="Mouse.MouseEnter">
        <EventTrigger.Actions>
            <BeginStoryboard Storyboard="{StaticResource MouseEnterFade}"/>
        </EventTrigger.Actions>
    </EventTrigger>
    <EventTrigger RoutedEvent="Mouse.MouseLeave">
        <EventTrigger.Actions>
            <BeginStoryboard Storyboard="{StaticResource MouseLeaveFade}"/>
        </EventTrigger.Actions>
    </EventTrigger>
</UserControl.Triggers>
<Grid x:Name="TabGrid" Background="Transparent">        
    <TextBlock x:Name="TabTitleText" Text="{Binding Path=Header}" Margin="10,0,10,0" Foreground="{DynamicResource MenuForegroundBrush}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Grid>
</UserControl>

0 个答案:

没有答案