zoukankan      html  css  js  c++  java
  • 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     }
  • 相关阅读:
    Idea的类中使用实体类(有@Data注解)的Get/Set方法报错
    Springboot前后端分离中,后端拦截器拦截后,前端没有对应的返回码可以判断
    Window NodeJs安装
    Linux(CENTOS7) NodeJs安装
    Linux(CENTOS7) YUM方式安装mysql5.7
    根据M3U8地址下载视频
    Mysql时间范围分区(RANGE COLUMNS方式)
    Window Mysql5.7免安装版配置
    Window Jdk配置(win7/win10都可以)
    .net core2.0 读取appsettings.json
  • 原文地址:https://www.cnblogs.com/XzcBlog/p/3093098.html
Copyright © 2011-2022 走看看