我使用的是Windows Phone 7应用,该页面上有一个页面和一个StackPanel。
StackPanel包含几个TextBlock元素。
我需要以相同的方式为所有TextBlock元素的颜色设置动画。
不幸的是,当我设置ColorAnimationUsingKeyFrames时,我只能指定一个TargetName。由于有多个TextBlock控件需要以相同的方式进行动画处理,这非常不方便,我怀疑必须有一种更好的方法来处理粘贴n个ColorAnimation定义的复制,每个文本块都有一个动画。
如何设置颜色动画以同时应用于多个控件?
编辑:我意识到这是一个WP7问题,但我已将其标记为WPF,因为我相信同样的技术适用于两者,但如果我错了,请随时纠正我。答案 0 :(得分:2)
您应该能够在单个元素的属性上定位动画,然后使用ElementName绑定来同步TextBlocks之间的值。或者示例:
<TextBlock x:Name="textOne" Text="One"/>
<TextBlock x:Name="textTwo" Text="Two"
Background="{Binding Background, ElementName=textOne}"/>
在上面的XAML中,一个TextBlock
的背景与另一个绑定。如果您的故事板以“textOne”为目标,那么另一个TextBlock
也会设置动画。
答案 1 :(得分:1)
我会尝试对称地做这个,外化画笔并在所有相应的地方使用它,如下所示:
<StackPanel.Resources>
<SolidColorBrush x:Key="TBBackground" Color="White"/>
<Style TargetType="TextBlock">
<Setter Property="Background" Value="{StaticResource TBBackground}"/>
</Style>
<StackPanel.Resources>
<!- ... -->
<Storyboard>
<ColorAnimation Storyboard.Target="{StaticResource TBBackground}"
Storyboard.TargetProperty="Color"
To="Red"/>
</Storyboard>
编辑:对它进行了测试并且存在一些不可变性的问题,否则可能需要在Silverlight中包装颜色,可能会遇到麻烦。
答案 2 :(得分:0)
使用故事板更改文本块。您可以使用storyboaed为文本块设置样式,然后在需要时执行故事板。