WPF 页面切换效果

最近做一个有页面切换的吧..

我觉得这个功能是比较基础的吧..

在网上百度了一下..

用NavigationWindow的比较好..

因为Demo中是带了淡入淡出的页面效果的..

我就想研究一下这个效果是怎么实现的..

发现找不到..

 

 1  public partial class MainWindow : NavigationWindow
 2     {
 3         public MainWindow()
 4         {
 5             InitializeComponent();
 6         }
 7         private void NavigationWindow_Navigating(object sender, NavigatingCancelEventArgs e)
 8         {
 9             if (Content != null && !_allowDirectNavigation)
10             {
11                 e.Cancel = true;
12                 _navArgs = e;
13                 this.IsHitTestVisible = false;
14                 DoubleAnimation da = new DoubleAnimation(0.3d, new Duration(TimeSpan.FromMilliseconds(100)));
15                 da.Completed += FadeOutCompleted;
16                 this.BeginAnimation(OpacityProperty, da);
17             }
18             _allowDirectNavigation = false;
19         }
20 
21         private void FadeOutCompleted(object sender, EventArgs e)
22         {
23             (sender as AnimationClock).Completed -= FadeOutCompleted;
24 
25             this.IsHitTestVisible = true;
26 
27             _allowDirectNavigation = true;
28             switch (_navArgs.NavigationMode)
29             {
30                 case NavigationMode.New:
31                     if (_navArgs.Uri == null)
32                     {
33                         NavigationService.Navigate(_navArgs.Content);
34                     }
35                     else
36                     {
37                         NavigationService.Navigate(_navArgs.Uri);
38                     }
39                     break;
40                 case NavigationMode.Back:
41                     NavigationService.GoBack();
42                     break;
43 
44                 case NavigationMode.Forward:
45                     NavigationService.GoForward();
46                     break;
47                 case NavigationMode.Refresh:
48                     NavigationService.Refresh();
49                     break;
50             }
51 
52             Dispatcher.BeginInvoke(DispatcherPriority.Loaded,
53                 (ThreadStart)delegate()
54                 {
55                     DoubleAnimation da = new DoubleAnimation(1.0d, new Duration(TimeSpan.FromMilliseconds(200)));
56                     this.BeginAnimation(OpacityProperty, da);
57                 });
58         }
59 
60         private bool _allowDirectNavigation = false;
61         private NavigatingCancelEventArgs _navArgs = null;
62     }

 

转载于:https://www.cnblogs.com/XzcBlog/archive/2013/05/22/3093098.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值