zoukankan      html  css  js  c++  java
  • 【WPF】淡入淡出切换页面

    <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;
        }
    }
    
  • 相关阅读:
    sqlserver中判断表或临时表是否存在
    Delphi 简单方法搜索定位TreeView项
    hdu 2010 水仙花数
    hdu 1061 Rightmost Digit
    hdu 2041 超级楼梯
    hdu 2012 素数判定
    hdu 1425 sort
    hdu 1071 The area
    hdu 1005 Number Sequence
    hdu 1021 Fibonacci Again
  • 原文地址:https://www.cnblogs.com/wywnet/p/3701509.html
Copyright © 2011-2022 走看看