-
-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathMainWindow.xaml.cs
149 lines (125 loc) · 4.91 KB
/
MainWindow.xaml.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
using System;
using System.Diagnostics;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using System.Windows.Media.Animation;
using System.Windows.Navigation;
using static SodaCL.Toolkits.Logger;
namespace SodaCL {
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window {
public static MainWindow mainWindow;
private bool IsThisPage;
public MainWindow() {
InitializeComponent();
mainWindow = this;
}
#region 自定义标题栏
private void TitleBar_GoBackBtn_Click(object sender, RoutedEventArgs e) {
MainFram.GoBack();
}
private void Border_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) {
if ((sender as Border).IsMouseDirectlyOver)
DragMove();
}
// 退出按钮
private void TitleBar_ExitBtn_Click(object sender, RoutedEventArgs e) {
try {
//Toolkits.IniFile.Write("LaunchTime", Convert.ToString(int.Parse(Toolkits.IniFile.Read("LaunchTime")??"0") + 1 ));
}
catch (Exception ex) {
Log(true, ModuleList.Main, LogInfo.Error, ex: ex);
}
finally {
var opcAni = new DoubleAnimation(0, TimeSpan.FromSeconds(0.2));
opcAni.Completed += (sender, r) => { this.Close(); };
this.BeginAnimation(OpacityProperty, opcAni);
}
}
//最小化按钮
private void TitleBar_MiniSizeBtn_Click(object sender, RoutedEventArgs e) {
var opcAni = new DoubleAnimation(0, TimeSpan.FromSeconds(0.2));
opcAni.Completed += (sender, r) => { this.WindowState = WindowState.Minimized; };
this.BeginAnimation(OpacityProperty, opcAni);
}
#endregion 自定义标题栏
#region 初次启动
private void Window_Initialized(object sender, EventArgs e) {
Log(false, ModuleList.Main, LogInfo.Info, "主窗体加载完毕");
}
#endregion 初次启动
#region 事件
private void MainFram_Navigated(object sender, NavigationEventArgs e) {
var easingFunc = new CubicEase {
EasingMode = EasingMode.EaseInOut
};
var AniTime = TimeSpan.FromSeconds(0.3);
if (MainFram.CanGoBack == true && !IsThisPage) {
var goBackSb = new Storyboard();
var goBackPanAni = new ThicknessAnimation(new Thickness(5, 0, 0, 0), new Thickness(-240, 6, 0, 0), AniTime) {
EasingFunction = easingFunc
};
Storyboard.SetTarget(goBackPanAni, TitleBar_TitlePan);
Storyboard.SetTargetProperty(goBackPanAni, new PropertyPath("Margin"));
goBackSb.Children.Add(goBackPanAni);
var goBackBtnAni = new ThicknessAnimation(new Thickness(-50, 0, 0, 0), new Thickness(10, 0, 0, 0), AniTime) {
EasingFunction = easingFunc,
BeginTime = TimeSpan.FromSeconds(0.2)
};
Storyboard.SetTarget(goBackBtnAni, TitleBar_GoBackBtn);
Storyboard.SetTargetProperty(goBackBtnAni, new PropertyPath("Margin"));
goBackSb.Children.Add(goBackBtnAni);
var goBackOpacAni = new DoubleAnimation(1, TimeSpan.FromSeconds(0.3));
Storyboard.SetTarget(goBackOpacAni, MainFram);
Storyboard.SetTargetProperty(goBackOpacAni, new PropertyPath("Opacity"));
goBackSb.Children.Add(goBackOpacAni);
goBackSb.Begin();
TitleBar_GoBackBtn.Visibility = Visibility.Visible;
}
else if (MainFram.CanGoBack == false) {
var goBackSb = new Storyboard();
var goBackBtnAni = new ThicknessAnimation(new Thickness(10, 0, 0, 0), new Thickness(-50, 0, 0, 0), AniTime) {
EasingFunction = easingFunc
};
Storyboard.SetTarget(goBackBtnAni, TitleBar_GoBackBtn);
Storyboard.SetTargetProperty(goBackBtnAni, new PropertyPath("Margin"));
goBackSb.Children.Add(goBackBtnAni);
var goBackPanAni = new ThicknessAnimation(new Thickness(-240, 0, 0, 0), new Thickness(5, 0, 0, 0), AniTime) {
EasingFunction = easingFunc,
BeginTime = TimeSpan.FromSeconds(0.2)
};
Storyboard.SetTarget(goBackPanAni, TitleBar_TitlePan);
Storyboard.SetTargetProperty(goBackPanAni, new PropertyPath("Margin"));
goBackSb.Children.Add(goBackPanAni);
goBackSb.Completed += (sender, e) => {
TitleBar_GoBackBtn.Visibility = Visibility.Hidden;
};
goBackSb.Begin();
}
}
private void MainFram_Navigating(object sender, NavigatingCancelEventArgs e) {
if (e.Uri == MainFram.CurrentSource)
IsThisPage = true;
else
IsThisPage = false;
}
private void TitleBar_IssuesBtn_Click(object sender, RoutedEventArgs e) {
Process.Start("explorer", "https://github.com/Soda-Quantum-Lab/SodaCL/issues");
}
private void TitleBar_SettingsBtn_Click(object sender, RoutedEventArgs e) {
MainFram.Navigate(new Uri("\\Pages\\Settings\\Set_About.xaml", UriKind.Relative));
}
private void Window_Activated(object sender, EventArgs e) {
var opcAni = new DoubleAnimation(1, TimeSpan.FromSeconds(0.1));
this.BeginAnimation(OpacityProperty, opcAni);
}
private void Window_Closed(object sender, EventArgs e) {
Log(false, ModuleList.Main, LogInfo.Info, "程序退出");
Trace.WriteLine("-------- SodaCL 程序日志记录结束 --------\n");
}
#endregion 事件
}
}