WP7 - 通过代码(而不是 XAML)淡化用户控件
本文关键字:XAML 控件 用户 代码 WP7 | 更新日期: 2023-09-27 17:56:45
我正在尝试弹出一个用户控件,然后将其淡出超过 3 秒。我正在尝试使用以下代码,但是在Popup.LoadedEvent和Splash.LoadedEvent的分配中,我一直得到不正确的参数值。我做错了什么?
Splash s = new Splash();
DoubleAnimation fade = new DoubleAnimation()
{
Duration = new Duration(TimeSpan.FromMilliseconds(3000)),
From = 1.0,
To = 0.0,
RepeatBehavior = new RepeatBehavior(1)
};
fade.Completed += new EventHandler(fade_Completed);
this.popup = new Popup();
this.popup.Child = s;
EventTrigger et = new EventTrigger();
et.RoutedEvent = Popup.LoadedEvent;
Storyboard sb = new Storyboard();
sb.Children.Add(fade);
BeginStoryboard bs = new BeginStoryboard() { Storyboard = sb };
et.Actions.Add(bs);
this.popup.Triggers.Add(et);
this.popup.IsOpen = true;
我似乎也无法弄清楚在哪里/如何设置目标属性。
编辑:我能够使用@Titan2782提供的链接获得答案。我已经在下面的答案中发布了它。
查看它
http://www.windowsphonegeek.com/articles/wp7-transitions-in-depth--custom-transitions 有一些代码来处理情节提要并设置目标属性。
您应该查看Windows Phone工具包中的转换内容: http://blogs.msdn.com/b/wfaught/archive/2010/11/15/transitions.aspx
它只有几行来获得这些过渡。
您可能在这里遇到一些问题,因为您使用的是弹出窗口,而可视化树中不存在弹出窗口?
我有一个在 vb 中带有按钮的示例,应该不难翻译成 c#:
Dim Fade As New Animation.DoubleAnimation
Fade.From = 0.5
Fade.To = 1
Fade.Duration = TimeSpan.FromSeconds(3)
Animation.Storyboard.SetTarget(Fade, button)
Animation.Storyboard.SetTargetProperty(Fade, New PropertyPath(Button.OpacityProperty))
Dim sb As New Animation.Storyboard
sb.Children.Add(highlight)
sb.Begin()
我想这也适用于弹出窗口。
多亏@Titan2782答案,我才能弄清楚
Splash s = new Splash();
DoubleAnimation fade = new DoubleAnimation()
{
Duration = new Duration(TimeSpan.FromMilliseconds(4000)),
From = 1.0,
To = 0.0,
RepeatBehavior = new RepeatBehavior(1)
};
fade.Completed += new EventHandler(fade_Completed);
this.popup = new Popup();
this.popup.Child = s;
Storyboard.SetTargetProperty(fade, new PropertyPath(UIElement.OpacityProperty));
sb.Children.Add(fade);
Storyboard.SetTarget(sb, s);
this.popup.IsOpen = true;
sb.Begin();