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. JavaScript简易教程(转)

    原文:http://www.cnblogs.com/yanhaijing/p/3685304.html 这是我所知道的最完整最简洁的JavaScript基础教程. 这篇文章带你尽快走进JavaScri ...

  2. JS 之DOM对象(1)

    介绍DOM1中底层的一些属性和方法. 节点操作 appendChild() parentNode.appendChild(newNode)  在parentNode节点的最后插入newNode ins ...

  3. 使用Let’s Encrypt轻松配置https站点

    使用Let's Encrypt轻松配置https站点 https不仅能提高网站安全,更是被搜索引擎纳入排名的因素之一. 2015年10月份,微博上偶然看到Let's Encrypt 推出了beta版, ...

  4. CodeIgniter框架中关于URL(index.php)的那些事

    最近,在做自己的个人网站时,采用了轻量级的php框架CodeIgniter.乍一看上去,代码清晰简洁,MVC模型非常容易维护.开发时我采用的工具是Netbeans IDE 8.0,当然,本文的内容和开 ...

  5. MVC 依赖注入

    本人主要是写给我自己看的,文章没有过多的解释,只留下步骤. 目的:面向接口编程,做到低耦合,高内聚 1.利用Nuget 管理工具,安装Ninject. 2.随便新建一个接口和一个实现类,我在此项目中是 ...

  6. [C#]Attribute特性(3)——AttributeUsage特性和特性标识符

    相关文章   [C#]Attribute特性 [C#]Attribute特性(2)——方法的特性及特性参数 AttributeUsage特性 除了可以定制自己的特性来注释常用的C#类型外,您可以用At ...

  7. 第五次课堂总结x

    一.知识点: 1.while语句 循环体语句:           while语句里的表达式可以是任何合法的表达式,循环体则只可以表达一条语句. while的循环体语句需要能改变循环条件的真假条件. ...

  8. Moqui学习Day3

    添加一个新建表单 添加一个按钮来弹出新建表单,并创建一个转换来处理输入数据操作. 在FindTutorial.xml文件中添加一个转换. <!--新增 列表 --> <transit ...

  9. Struts2+Jquery实现ajax并返回json类型数据

    来源于:http://my.oschina.net/simpleton/blog/139212 摘要 主要实现步骤如下: 1.JSP页面使用脚本代码执行ajax请求 2.Action中查询出需要返回的 ...

  10. OC基础--OC中类的定义

    OC中类的定义与使用跟C#和java差别相当明显,做个笔记,牢记并加以区别! 一.OC中类的定义:关键字@implementation 和 @end 注意事项: 1.定义好一个类之后,要让这个类继承N ...