从app.xaml获取storyboard并以编程方式设置目标

本文关键字:编程 方式 设置 目标 app xaml 获取 storyboard | 更新日期: 2023-09-27 18:06:01

我尝试从app.xaml获得动画(向上/向下移动标签,如消息弹出)。但是,当我试图获取storyboard

app.xaml:

<Storyboard x:Key="AnimatedMessage">
            <DoubleAnimationUsingKeyFrames 
                                Storyboard.TargetProperty="(UIElement.RenderTransform).(TranslateTransform.Y)"
                                Duration="0:0:10"
                                AutoReverse="True">
                <LinearDoubleKeyFrame Value="100" KeyTime="0:0:2"/>
                <LinearDoubleKeyFrame Value="200" KeyTime="0:0:4"/>
                <LinearDoubleKeyFrame Value="300" KeyTime="0:0:6"/>
            </DoubleAnimationUsingKeyFrames>
        </Storyboard>

我的后端:

Storyboard SBStartAnimation = (Storyboard)this.FindResource("AnimatedMessage");
Storyboard.SetTarget(SBStartAnimation, LBAnimateMessage);
SBStartAnimation.Begin(this);

但是它责怪我,我不能设置属性到storyboard-object,因为它是只读的。

更新:

我要动画的标签:

<Label Content="" Name="LBAnimateMessage" Visibility="Hidden" Width="600" Style="{StaticResource Style_BasicMessage}" Margin="10,303,235,38"/>

从app.xaml获取storyboard并以编程方式设置目标

主要的问题是你正在尝试设置故事板的目标,而不是设置它的动画。试试Storyboard.SetTarget(SBStartAnimation.Children.First(), LBAnimateMessage);

不要忘记LBAnimateMessage必须是PropertyPath的属性。

编辑:更正,PropertyPath是为SetTargetProperty.