从故事板中获取动画元素

3

我有一个在资源字典文件中的故事板:

<Storyboard x:Key="InfoDissolve">
    <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)">
        <DiscreteObjectKeyFrame KeyTime="0:0:0" Value="{x:Static Visibility.Visible}"/>
        <DiscreteObjectKeyFrame KeyTime="0:0:5" x:Name="OutVisibility" Value="{x:Static Visibility.Hidden}"/>
    </ObjectAnimationUsingKeyFrames>
    <DoubleAnimation                
          Storyboard.TargetProperty="Opacity"
          BeginTime="0:0:0" From="0.0" To="1.0" Duration="0:0:0.3"/>
    <DoubleAnimation              
          x:Name="OutOpacity"
          Storyboard.TargetProperty="Opacity"            
           BeginTime="0:0:3" From="1.0" To="0.0" Duration="0:0:2"/>
</Storyboard>

在后端代码中,我会这样获取它。
var sb = (Storyboard) MW.FindResource("InfoDissolve");

在代码后台,我需要访问outvisibility关键帧和outopacity双重动画,以便可以更改它们的keytime和begintime。我该怎么做?
1个回答

2
sb.Children

这个时间轴集合将包含两个DoubleAnimation对象。只需检查它们的名称,然后对每个对象执行所需操作(我认为您需要将它们转换为相应类型)。


是的,我知道子元素,但我不知道如何从中提取我想要的元素。 - user3595338
只需对其进行简单的foreach循环,如下所示: foreach (DoubleAnimation animation in sb.Children) { // 在此处编写您的代码 } - Miiite
1
有没有比foreach更好的方法?例如像sb.Children.getChildByName("OutOpacity")这样的东西。另外,如果我按照你建议的方式去做,Visual Studio会提示可能出现无效转换异常。 - user3595338

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接