如何以编程方式在 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
因此,它应该将 UIElement
的 Opacity
增加到 1.0 或类似值。但是,我相信您为动画定位的 Button
已经具有不透明度 1.0。因此,即使动画正在运行,您也看不到任何变化。因此,尝试使用 FadeOutThemeTransition
来测试您的代码是否有效。
其次,你没有设置所有这些东西来设置目标:
SetTarget
、SetTargetName
或 animation.TargetName =
您只需使用其中之一即可。
第三, 你没有设置 Duration
属性 和 new TimeSpan(4)
。我不知道您使用的构造函数返回的 TimeSpan
是什么类型,但它不适用于此,它适用于 TimeSpan.FromMilliseconds(500)
之类的东西。
第四,你想用FadInThemeAnimation
的BeginTime
属性做什么?即使您是有意使用它,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();
我已经测试过了,它有效。希望对您有所帮助。
我正在尝试以编程方式在动画中做一个简单的淡入淡出。 在 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
因此,它应该将 UIElement
的 Opacity
增加到 1.0 或类似值。但是,我相信您为动画定位的 Button
已经具有不透明度 1.0。因此,即使动画正在运行,您也看不到任何变化。因此,尝试使用 FadeOutThemeTransition
来测试您的代码是否有效。
其次,你没有设置所有这些东西来设置目标:
SetTarget
、SetTargetName
或 animation.TargetName =
您只需使用其中之一即可。
第三, 你没有设置 Duration
属性 和 new TimeSpan(4)
。我不知道您使用的构造函数返回的 TimeSpan
是什么类型,但它不适用于此,它适用于 TimeSpan.FromMilliseconds(500)
之类的东西。
第四,你想用FadInThemeAnimation
的BeginTime
属性做什么?即使您是有意使用它,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();
我已经测试过了,它有效。希望对您有所帮助。