【问题标题】:Is it possible to Animate a color change on multiple textblocks at once?是否可以一次在多个文本块上为颜色变化设置动画?
【发布时间】:2011-08-15 13:43:52
【问题描述】:

我有一个 Windows Phone 7 应用程序,该应用程序有一个页面和该页面上的 StackPanel。

StackPanel 包含多个 TextBlock 元素。

我需要以相同的方式为所有 TextBlock 元素的颜色设置动画。

不幸的是,当我设置 ColorAnimationUsingKeyFrames 时,我只能指定一个 TargetName。由于有多个 TextBlock 控件需要以相同的方式进行动画处理,这非常不方便,我怀疑必须有一种更好的方法来处理这个问题,即复制粘贴 n 个 ColorAnimation 定义,每个文本块一个动画。

任何想法如何设置彩色动画以一次应用于多个控件?

编辑:我意识到这是一个 WP7 问题,但我已将其标记为 WPF,因为我相信相同的技术适用于两者,但如果我错了,请随时纠正我。

【问题讨论】:

  • 你也可以标记它 XAML,因为这对所有三个都是通用的。

标签: wpf silverlight xaml windows-phone-7 animation


【解决方案1】:

您应该能够将动画定位到单个元素的属性,然后使用 ElementName 绑定在 TextBlock 之间同步值。或示例:

<TextBlock x:Name="textOne" Text="One"/>
<TextBlock x:Name="textTwo" Text="Two"
           Background="{Binding Background, ElementName=textOne}"/>

在上述 XAML 中,一个 TextBlock 的背景绑定到另一个。如果您的情节提要以“textOne”为目标,那么另一个 TextBlock 也会进行动画处理。

【讨论】:

【解决方案2】:

我会尝试对称地执行此操作,将画笔外部化并在各个位置使用它,如下所示:

<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 中可能会遇到一些问题。

【讨论】:

    【解决方案3】:

    使用情节提要来更改您的文本块。您可以使用故事板设置文本块的样式,然后在需要时执行故事板。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-14
      • 2018-03-12
      • 2012-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-19
      • 1970-01-01
      相关资源
      最近更新 更多