看看下面的XAML。WPF中的stackpanel mouseover上的動畫文本塊
我想讓«HelloText»TextBlock在我用鼠標懸停在它上面時發光(因此故事板而不是IsMouseOver上的觸發器)。下面的代碼不起作用,因爲兩個TextBlocks具有相同的名稱。如何編輯此代碼,以便可以將«MyStackPanelStyle»應用於多個StackPanel?
<Window.Resources>
<Style TargetType="StackPanel" x:Key="MyStackPanelStyle">
<Style.Triggers>
<EventTrigger RoutedEvent="StackPanel.MouseEnter">
<BeginStoryboard>
<Storyboard>
<ColorAnimation Duration="0:0:0.5" Storeboard.TargetName="HelloText" Storyboard.TargetProperty="(Foreground).(SolidColorBrush.Color)" To="LightGray" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
<EventTrigger RoutedEvent="StackPanel.MouseLeave">
<BeginStoryboard>
<Storyboard>
<ColorAnimation Duration="0:0:0.5" Storeboard.TargetName="HelloText" Storyboard.Target="TextBlock" Storyboard.TargetProperty="(Foreground).(SolidColorBrush.Color)" To="#505050" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Style.Triggers>
</Style>
</Window.Resources>
<StackPanel style="MyStackPanelStyle">
<TextBlock Name="HelloText" Text="Hello" />
<TextBlock Text="World" />
</StackPanel>
<StackPanel style="MyStackPanelStyle">
<TextBlock Name="HelloText" Text="Hello" />
<TextBlock Text="World" />
</StackPanel>
編輯:
我讀過的一個article by Sergio Loscialo這lookded看好。不幸的是,這個解決方案適用於從AnimationPlaceholder繼承的所有目標元素,這意味着當我在頁面上有多個這些StackPanel時,它將不起作用。
由於前景被繼承,你可以只設置動畫的StackPanel中和你的TextBlocks應該動畫結果。但是,您的StackPanel中的任何其他控件也會將其前景設爲動畫。 –
@KentBoogaart感謝您的回答,但動畫應該只適用於一個定義的TextBlock的StackPanel中 – KBoek