2011-05-18 28 views
3

我试图弹出一个用户控件,然后淡出超过3秒。我试图使用下面的代码,但是我一直得到不正确的参数值的Popup.LoadedEvent以及Splash.LoadedEvent的分配。我究竟做错了什么?WP7 - 通过代码淡出用户控件,而不是XAML

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得到答案。我已将它发布在下面的答案中。

+0

如果你找到一个答案你自己的问题,请提交作为一个答案,而不是。 – 2011-05-18 20:09:13

+0

@ H.B。我没有找到我自己的答案。我从@ Titan2782提供的链接中得到答案。我为什么要拿走他的信用? – 2011-05-18 20:59:28

+0

你当然不应该声称它是你自己的,它只是格式的问题。你仍然可以接受他/她的回答,而且你仍然可以注意到这是他/她的感谢,但问题是回答问题和答案。 (例如在[这个问题](http://stackoverflow.com/questions/5854059/in-the-built-in-wpf-datagrid-can-i-set-the-datasource-for-a-datagridtemplatecolu/) asker做到了。) – 2011-05-18 21:04:49

回答

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() 

我想这个作品也有弹出。

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();