如何以编程方式在 UWP 中使用 FadeInAnimation.class?

How to use FadeInAnimation.class in UWP programmatically?

我正在尝试以编程方式在动画中做一个简单的淡入淡出。 在 XAML 中,我有一个页面,里面有一个名为 Grid 的页面。

后面的代码如下所示:

InitializeComponent();
Button button = new Button() {
    Width = 200,
    Height = 200,
    Content = "Text",
    Background = new SolidColorBrush(Colors.Red)
};
button.Name = "target";

Storyboard myStory = new Storyboard();
FadeInThemeAnimation animation = new FadeInThemeAnimation() {
    BeginTime = new TimeSpan(2),
    Duration = new TimeSpan(4),
};

animation.TargetName = button.Name;
Storyboard.SetTarget(animation, button);
Storyboard.SetTargetProperty(animation, button.Name);

myStory.Children.Add(animation);
myGrid.Children.Add(button);

button.PointerEntered += (s, e) => {
    myStory.Begin();
};

问题是我没有看到任何动画。另外,我不确定在哪里打电话 begin()。最好放在 Loaded 活动中还是其他地方?

编辑:Here 是我尝试使用的 FadeInThemeAnimation。

你的代码有很多问题。

首先,在官方文档中,FadeInThemeAnimation被描述为

preconfigured opacity animation

因此,它应该将 UIElementOpacity 增加到 1.0 或类似值。但是,我相信您为动画定位的 Button 已经具有不透明度 1.0。因此,即使动画正在运行,您也看不到任何变化。因此,尝试使用 FadeOutThemeTransition 来测试您的代码是否有效。

其次,你没有设置所有这些东西来设置目标:

SetTargetSetTargetNameanimation.TargetName =

您只需使用其中之一即可。

第三, 你没有设置 Duration 属性 和 new TimeSpan(4)。我不知道您使用的构造函数返回的 TimeSpan 是什么类型,但它不适用于此,它适用于 TimeSpan.FromMilliseconds(500) 之类的东西。

第四,你想用FadInThemeAnimationBeginTime属性做什么?即使您是有意使用它,TimeSpan 问题也适用于此。

所以,在所有这些之后,尝试这样的事情:

Storyboard myStory = new Storyboard();
FadeOutThemeAnimation animation = new FadeOutThemeAnimation()
{
    Duration = TimeSpan.FromMilliseconds(500)
};

Storyboard.SetTarget(animation, button);

myStory.Children.Add(animation);
PlayGround.PointerPressed += (kk, kkk) => myStory.Begin();

我已经测试过了,它有效。希望对您有所帮助。