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;
        }
    }
    
  • 相关阅读:
    solr开发从查询结果集中获取对象数据
    solr开发,提交索引数据的几种方式
    初识SolrJ开发, schema.xml的配置与服务初始化.
    实例介绍,如何在开发中将各层日志归类输出.
    springmvc整合redis架构搭建实例
    面试求职中你需要了解的Java面向对象
    整合Solr到Tomcat服务器,并配置IK分词
    formValidator输入验证、异步验证实例 + licenseImage验证码插件实例应用
    SpringMVC整合Mongodb开发,高级操作
    SpringMVC整合Mongodb开发 架构搭建
  • 原文地址:https://www.cnblogs.com/wywnet/p/3701509.html
Copyright © 2011-2022 走看看