1 using System;
2 using System.Threading;
3 using System.Windows;
4 using System.Windows.Controls;
5 using WangCai.Common;
6
7 namespace WangCai.Controls
8 {
9
10 public class MyTabControl : TabControl
11 {
12
13 Timer t = null;
14 private int left = 0;
15 private int AnimationIndex = 1;
16 protected override void OnSelectionChanged(SelectionChangedEventArgs e)
17 {
18 Action a = () =>
19 {
20 try
21 {
22 AnimationIndex++;
23 var control = e.Source as MyTabControl;
24 if (control == null) return;
25 base.OnSelectionChanged(e);
26 if (AnimationIndex % 2 == 0)
27 {
28 left = -100;
29 }
30 else
31 {
32 left = 100;
33 }
34
35 var selectItem = control.SelectedContent as ScrollViewer;
36 if (selectItem == null)
37 {
38
39 var selectItem_2 = control.SelectedContent as Grid;
40 if (selectItem_2 == null)
41 {
42 var selectItem_3 = control.SelectedContent as StackPanel;
43 if (selectItem_3 == null) return;
44 selectItem_3.Visibility = Visibility.Collapsed;
45 t = new Timer(Move, selectItem_3, 0, 5);
46 return;
47 }
48 selectItem_2.Visibility = Visibility.Collapsed;
49 t = new Timer(Move, selectItem_2, 0, 5);
50 return;
51 }
52 selectItem.Visibility = Visibility.Collapsed;
53
54 t = new Timer(Move, selectItem, 0, 2);
55
56 }
57 catch (Exception)
58 {
59
60 }
61 };
62 this.Dispatcher.BeginInvoke(a);
63 }
64
65
66 public void Move(object o)
67 {
68
69 Action a = () =>
70 {
71 try
72 {
73 if (AnimationIndex % 2 == 0)
74 {
75 left +=6;
76 if (left > 5)
77 {
78 t.Dispose();
79
80 return;
81 }
82 AnimationIndex = 0;
83 }
84 else
85 {
86
87 left -= 6;
88
89 if (left <= 0)
90 {
91 t.Dispose();
92
93 return;
94 }
95 AnimationIndex = 1;
96 }
97
98 var selectItem = o as ScrollViewer;
99 if (selectItem == null)
100 {
101 var selectItem_2 = o as Grid;
102 if (selectItem_2 == null)
103 {
104 var selectItem_3 = o as StackPanel;
105 if (selectItem_3 == null) return;
106 selectItem_3.Visibility = Visibility.Visible;
107 selectItem_3.Margin = new Thickness(left, 0, 0, 0);
108
109 return;
110 }
111 selectItem_2.Visibility = Visibility.Visible;
112 selectItem_2.Margin = new Thickness(left, 0, 0, 0);
113 return;
114 }
115 selectItem.Visibility = Visibility.Visible;
116 selectItem.Margin = new Thickness(left, 0, 0, 0);
117 }
118 catch (Exception)
119 {
120
121 }
122
123 };
124 this.Dispatcher.BeginInvoke(a);
125 }
126
127
128 }
129 }