在完成事件Windows 8应用程序中从情节提要获取UIElement

本文关键字:UIElement 获取 事件 Windows 应用程序 | 更新日期: 2023-09-27 18:28:46

我有一个正在用情节提要制作动画的图像。我希望能够在故事板动画完成后更改图像的来源。但是,我不知道如何访问Completed事件处理程序中的Image。如何通过情节提要对象访问图像。

private void AnimateImage() {
    Image i = new Image();
    //Set name and source of image here
    i.RenderTransform = new CompositeTransform();
    Duration d = new Duration(TimeSpan.FromSeconds(2));
    DoubleAnimation anim1 = new DoubleAnimation();
    DoubleAnimation anim2 = new DoubleAnimation();
    anim1.Duration = d;
    anim2.Duration = d;
    Storyboard sb = new Storyboard();
    sb.Duration = d;
    sb.Children.Add(anim1);
    sb.Children.Add(anim2);
    Storyboard.SetTarget(anim1, i);
    Storyboard.SetTarget(anim2, i);
    Storyboard.SetTargetProperty(anim1, "(UIElement.RenderTransform).(CompositeTransform.TranslateX)");
    Storyboard.SetTargetProperty(anim2, "(UIElement.RenderTransform).(CompositeTransform.TranslateY)");
    //Set anim1/anim2 To/From properties
    sb.Completed += StoryboardCompleted;
    sb.Begin();
}
private void StoryboardCompleted(object sender, object o) {
    Storyboard sb = (Storyboard) sender;
    //How can I gain access to the Image?
}

我用多个图像做了很多次这个动画,所以我不能简单地制作一个成员变量。我需要知道在Completed事件中完成了哪个图像。

在完成事件Windows 8应用程序中从情节提要获取UIElement

您可以为事件使用Lambda表达式,这样您就可以将Image作为参数传入

示例:

sb.Completed += (s,e) => StoryboardCompleted(sb, i);
 ....
private void StoryboardCompleted(Storyboard storyboard, Image image)
{
}