using System;
using System.Threading;
using System.Windows;
using System.Windows.Controls;
using WangCai.Common; namespace WangCai.Controls
{ public class MyTabControl : TabControl
{ Timer t = null;
private int left = ;
private int AnimationIndex = ;
protected override void OnSelectionChanged(SelectionChangedEventArgs e)
{
Action a = () =>
{
try
{
AnimationIndex++;
var control = e.Source as MyTabControl;
if (control == null) return;
base.OnSelectionChanged(e);
if (AnimationIndex % == )
{
left = -;
}
else
{
left = ;
} var selectItem = control.SelectedContent as ScrollViewer;
if (selectItem == null)
{ var selectItem_2 = control.SelectedContent as Grid;
if (selectItem_2 == null)
{
var selectItem_3 = control.SelectedContent as StackPanel;
if (selectItem_3 == null) return;
selectItem_3.Visibility = Visibility.Collapsed;
t = new Timer(Move, selectItem_3, , );
return;
}
selectItem_2.Visibility = Visibility.Collapsed;
t = new Timer(Move, selectItem_2, , );
return;
}
selectItem.Visibility = Visibility.Collapsed; t = new Timer(Move, selectItem, , ); }
catch (Exception)
{ }
};
this.Dispatcher.BeginInvoke(a);
} public void Move(object o)
{ Action a = () =>
{
try
{
if (AnimationIndex % == )
{
left +=;
if (left > )
{
t.Dispose(); return;
}
AnimationIndex = ;
}
else
{ left -= ; if (left <= )
{
t.Dispose(); return;
}
AnimationIndex = ;
} var selectItem = o as ScrollViewer;
if (selectItem == null)
{
var selectItem_2 = o as Grid;
if (selectItem_2 == null)
{
var selectItem_3 = o as StackPanel;
if (selectItem_3 == null) return;
selectItem_3.Visibility = Visibility.Visible;
selectItem_3.Margin = new Thickness(left, , , ); return;
}
selectItem_2.Visibility = Visibility.Visible;
selectItem_2.Margin = new Thickness(left, , , );
return;
}
selectItem.Visibility = Visibility.Visible;
selectItem.Margin = new Thickness(left, , , );
}
catch (Exception)
{ } };
this.Dispatcher.BeginInvoke(a);
} }
}

WPF TabControl 模拟动画的更多相关文章

  1. 使用WPF技术模拟手机界面

    原文:使用WPF技术模拟手机界面 1. 前言 WPF(Windows Presentation Foundation),即"Windows呈现基础",它的目的非常明确,就是用来把数 ...

  2. WPF中的动画——(三)时间线(TimeLine)

    WPF中的动画——(三)时间线(TimeLine) 时间线(TimeLine)表示时间段. 它提供的属性可以让控制该时间段的长度.开始时间.重复次数.该时间段内时间进度的快慢等等.在WPF中内置了如下 ...

  3. WPF编程学习——动画

    前言 使用动画,是增强用户体验的一种有效的手段.合理的动画,可以让应用程序的界面看起来更加自然.真实.流畅.舒适,更有效地向用户展现信息,用户也更容易接受.同时也增加了软件使用的乐趣,提高用户粘度.( ...

  4. WPF 跟随鼠标动画 by wgscd

    WPF 跟随鼠标动画 by wgscd <UserControl x:Class="WpfApplication1.Spark" xmlns="http://sch ...

  5. 【WPF学习笔记】[转]周银辉之WPF中的动画 && 晓风影天之wpf动画——new PropertyPath属性链

    (一)WPF中的动画 动画无疑是WPF中最吸引人的特色之一,其可以像Flash一样平滑地播放并与程序逻辑进行很好的交互.这里我们讨论一下故事板. 在WPF中我们采用Storyboard(故事板)的方式 ...

  6. WPF 有趣的动画效果

    WPF 有趣的动画效果         这一次我要呈上一个简单的文章,关于给你的WPF apps加入美丽的光线动画,可是我对动画这东西可能有点入迷了.         实际上.我对动画如此的入迷,以至 ...

  7. WPF 画线动画效果实现

    原文:WPF 画线动画效果实现 弄了将近三天才搞定的,真是艰辛的实现. 看了很多博客,都太高深了,而且想要实现的功能都太强大了,结果基础部分一直实现不了,郁闷啊~ 千辛万苦终于找到了一个Demo,打开 ...

  8. WPF特效-粒子动画

    原文:WPF特效-粒子动画 WPF实现泡泡龙小游戏效果.     /// -Ball to Ball Collision - Detection and Handling    /// http:// ...

  9. WPF 动态模拟CPU 使用率曲线图

    原文:WPF 动态模拟CPU 使用率曲线图      在工作中经常会遇到需要将一组数据绘制成曲线图的情况,最简单的方法是将数据导入Excel,然后使用绘图功能手动生成曲线图.但是如果基础数据频繁更改, ...

随机推荐

  1. memcached协议

    memcached协议 旧版:http://code.sixapart.com/svn/memcached/trunk/server/doc/protocol.txt 新版:https://githu ...

  2. Angular权威指南学习笔记

    第一章.        初识Angular--Angular是MVW的Js框架. 第二章.        数据绑定--ViewModel中不仅可以含有变量,还可以还有事件.可以通过事件来控制变量的值改 ...

  3. Android中对JSONArray数组的指定项进行删除,更新。

    首先假设有这么一个JSONArray JSONArray Array1;JSONArray ITEM = new JSONArray(); name为你获取要删除的字段名称,IETM就是你删除后得到的 ...

  4. Java系列: 关于HttpSessionListener的sessionDestroyed什么时候触发

    根据书本写了下面这个监听器,然后开始调试,打开一个浏览器来访问该网页,可以正常触发sessionCreated,然后关闭浏览器,发现没有触发sessionDestroyed,然后我怀疑是不是这个监听器 ...

  5. 慢牛系列三:React Native实践

    上次发布了我的慢牛股票APP之后,有园友反馈有点卡,这个APP是基于Sencha Touch + Cordova开发的,Sencha本身是一个比较重的框架,在Chrome里运行性能还是不错的,但是在A ...

  6. JavaScript split() 方法

    split() 方法用于把一个字符串分割成字符串数组.

  7. 在.net中为什么第一次执行会慢?

    众所周知.NET在第一次执行的时比第二第三次的效率要低很多,最常见的就是ASP.NET中请求第一个页面的时候要等上一段时间,而后面任意刷新响应都非常迅速,那么是什么原因导致的呢?为什么微软不解决这个问 ...

  8. 英语etc怎么发音、单词来历

    etc是等等的意思,与and so on 相同 音标/et'set(a)ra/ 源于法语et cetera,也是等等的意思 在计算机操作系统目录(linux和windows)有一个叫etc的目录 里面 ...

  9. 传智168期JavaEE就业班 day04-dom

    * 课程回顾: * js语法 * js的动态函数和匿名函数 * js动态函数 Function new Function(); * 匿名函数:没有名称的函数,起个名称 var add = functi ...

  10. 使用nginx绑定域名,代理gitlab

    默认情况下,gitlab通过自带的unicorn来充当web页面的,不用nginx也可以,这里我们使用nginx代理vim /etc/yum.reos.d/nginx.repo # 编辑nginx.r ...