WP7 - 通过代码而非XAML实现用户控件的渐隐效果

3

我想弹出一个用户控件,然后在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提供的链接,我已经得到了答案。我已经在下面的回答中发布了它。


如果你找到了自己问题的答案,请将其作为一个答案提交。 - H.B.
@H.B. 我没有找到自己的答案。我是从 @Titan2782 提供的链接中得到了答案。为什么要剥夺他的功劳呢? - Dustin Davis
当然,您不应该将其声明为自己的内容,这只是格式问题。您仍然可以接受他/她的答案,并且仍然可以注明这要归功于他/她,但问题是问题,答案是答案。(例如,在此问题中,提问者就是这样做的。) - H.B.
4个回答

3

1

感谢 @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();

1

1

我有一个在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()

我想这也适用于弹出窗口。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接