【WPF】淡入淡出切换页面
2014-04-30 15:54
197 查看
<NavigationWindow x:Class="WpfApplication1.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Switch page with transition" Height="512" Icon="icon1.ico" Width="958" ShowsNavigationUI="False" Source="Index.xaml" Navigating="NavigationWindow_Navigating" ResizeMode="NoResize"> </NavigationWindow>
using System; using System.Threading; using System.Windows; using System.Windows.Media.Animation; using System.Windows.Navigation; using System.Windows.Threading; namespace WpfApplication1 { /// <summary> /// Window1.xaml 的交互逻辑 /// </summary> public partial class Window1 : NavigationWindow { public Window1() { InitializeComponent(); } private void NavigationWindow_Navigating(object sender, NavigatingCancelEventArgs e) { if (Content != null && !_allowDirectNavigation) { e.Cancel = true; _navArgs = e; this.IsHitTestVisible = false; DoubleAnimation da = new DoubleAnimation(0.3d, new Duration(TimeSpan.FromMilliseconds(300))); da.Completed += FadeOutCompleted; this.BeginAnimation(OpacityProperty, da); } _allowDirectNavigation = false; } private void FadeOutCompleted(object sender, EventArgs e) { (sender as AnimationClock).Completed -= FadeOutCompleted; this.IsHitTestVisible = true; _allowDirectNavigation = true; switch (_navArgs.NavigationMode) { case NavigationMode.New: if (_navArgs.Uri == null) { NavigationService.Navigate(_navArgs.Content); } else { NavigationService.Navigate(_navArgs.Uri); } break; case NavigationMode.Back: NavigationService.GoBack(); break; case NavigationMode.Forward: NavigationService.GoForward(); break; case NavigationMode.Refresh: NavigationService.Refresh(); break; } Dispatcher.BeginInvoke(DispatcherPriority.Loaded, (ThreadStart)delegate() { DoubleAnimation da = new DoubleAnimation(1.0d, new Duration(TimeSpan.FromMilliseconds(200))); this.BeginAnimation(OpacityProperty, da); }); } private bool _allowDirectNavigation = false; private NavigatingCancelEventArgs _navArgs = null; } }
相关文章推荐
- 包含min函数的栈
- ubuntu获取查看uuid的方法
- python获取某网址下所有图片
- Apache Shiro 简介
- 解决non-object的重大问题
- linux bash shell之declare
- ItemBased With Mahout
- [April]总结和规划
- JDOM读取XML文件例子程序
- 另类保存微信公众平台历史消息的方法 - 星标消息
- 惊涛怪浪(double dam-break) -- position based fluids
- 异常
- 在Visual Studio 中替换空行
- android常用工具记录
- 在一台电脑访问另一台电脑的mysql数据库
- Android Http 异步请求
- hadoop源码 - Client代码结构
- error: pointer targets in passing argument 3 of 'accept' differ in signedness [-Werror=pointer-sign
- 实现运动的尾巴效果
- Reverse Words in a String