跳到主要内容

github/tai

公开

Tai · Windows 软件与网站使用时长统计。上游 Planshit/Tai 的源码镜像,非灵栈原创;MIT 许可。来源:https://github.com/Planshit/Tai 。本次为手动同步,暂不提供安装包。

提交记录
修改Core/Librarys/Win32API.cs+13 −0看文件
@@ -220,11 +220,24 @@ namespace Core.Librarys
220220 #endregion
221221
222222 #region 键盘钩子
223新增: [StructLayout(LayoutKind.Sequential)]
224新增: public class KeyboardHookStruct
225新增: {
226新增: public int vkCode; //定一个虚拟键码。该代码必须有一个价值的范围1至254
227新增: public int scanCode; // 指定的硬件扫描码的关键
228新增: public int flags; // 键标志
229新增: public int time; // 指定的时间戳记的这个讯息
230新增: public int dwExtraInfo; // 指定额外信息相关的信息
231新增: }
232新增:
223233 private const int WH_KEYBOARD_LL = 13;
224234 public const int WM_KEYDOWN = 0x0100;
225235 private const int WH_MOUSE_LL = 14;
226236 public const int WM_LBUTTONDBLCLK = 0x202;
227237 public const int WM_WHEEL = 0x20a;
238新增: public const int WM_KEYUP = 0x101;
239新增: public const int WM_SYSKEYDOWN = 0x104;
240新增: public const int WM_SYSKEYUP = 0x105;
228241 /// <summary>
229242 /// 设置键盘钩子
230243 /// </summary>
修改UI/App.xaml.cs+7 −14看文件
@@ -191,8 +191,11 @@ namespace UI
191191 services.AddSingleton<IAppData, AppData>();
192192 services.AddSingleton<ICategorys, Categorys>();
193193
194新增: // UI服务
194195 services.AddSingleton<IAppContextMenuServicer, AppContextMenuServicer>();
195196 services.AddSingleton<IThemeServicer, ThemeServicer>();
197新增: services.AddSingleton<IMainServicer, MainServicer>();
198新增: services.AddSingleton<IInputServicer, InputServicer>();
196199
197200 // 主窗口
198201 services.AddSingleton<MainViewModel>();
@@ -235,13 +238,10 @@ namespace UI
235238 Shutdown();
236239 }
237240
238删除: var main = serviceProvider.GetService<IMain>();
241新增: var main = serviceProvider.GetService<IMainServicer>();
242新增: main.Start();
243新增:
239244 var observer = serviceProvider.GetService<IObserver>();
240删除:
241删除: main.OnStarted += Main_OnStarted;
242删除: main.Run();
243删除:
244删除:
245245 observer.OnAppActive += (p, d, f) =>
246246 {
247247 Dispatcher.BeginInvoke(System.Windows.Threading.DispatcherPriority.Background, new Action(() =>
@@ -251,16 +251,9 @@ namespace UI
251251 };
252252 // 创建保活窗口
253253 keepaliveWindow = new HideWindow();
254删除:
255删除:
256删除: appData = serviceProvider.GetService<IAppData>();
257254 }
258255
259删除: private void Main_OnStarted(object sender, EventArgs e)
260删除: {
261删除: var theme = serviceProvider.GetService<IThemeServicer>();
262删除: theme.Init();
263删除: }
256新增:
264257
265258 private void ShowMainWindow()
266259 {
新增UI/Servicers/IInputServicer.cs+21 −0看文件
@@ -0,0 +1,21 @@
1新增:using System;
2新增:using System.Collections.Generic;
3新增:using System.Linq;
4新增:using System.Text;
5新增:using System.Threading.Tasks;
6新增:
7新增:namespace UI.Servicers
8新增:{
9新增: public interface IInputServicer
10新增: {
11新增: void Start();
12新增: /// <summary>
13新增: /// 当键盘按下时发生
14新增: /// </summary>
15新增: event InputEventHandler OnKeyDownInput;
16新增: /// <summary>
17新增: /// 当键盘抬起时发生
18新增: /// </summary>
19新增: event InputEventHandler OnKeyUpInput;
20新增: }
21新增:}
新增UI/Servicers/IMainServicer.cs+13 −0看文件
@@ -0,0 +1,13 @@
1新增:using System;
2新增:using System.Collections.Generic;
3新增:using System.Linq;
4新增:using System.Text;
5新增:using System.Threading.Tasks;
6新增:
7新增:namespace UI.Servicers
8新增:{
9新增: public interface IMainServicer
10新增: {
11新增: void Start();
12新增: }
13新增:}
新增UI/Servicers/InputEventHandler.cs+11 −0看文件
@@ -0,0 +1,11 @@
1新增:using System;
2新增:using System.Collections.Generic;
3新增:using System.Linq;
4新增:using System.Text;
5新增:using System.Threading.Tasks;
6新增:using System.Windows.Forms;
7新增:
8新增:namespace UI.Servicers
9新增:{
10新增: public delegate void InputEventHandler(object sender, Keys key);
11新增:}
新增UI/Servicers/InputServicer.cs+56 −0看文件
@@ -0,0 +1,56 @@
1新增:using Core.Librarys;
2新增:using System;
3新增:using System.Collections.Generic;
4新增:using System.Diagnostics;
5新增:using System.Linq;
6新增:using System.Runtime.InteropServices;
7新增:using System.Text;
8新增:using System.Threading.Tasks;
9新增:using System.Windows.Forms;
10新增:
11新增:namespace UI.Servicers
12新增:{
13新增: public class InputServicer : IInputServicer
14新增: {
15新增: public event InputEventHandler OnKeyDownInput;
16新增: public event InputEventHandler OnKeyUpInput;
17新增:
18新增: private Win32API.LowLevelKeyboardProc keyboardProc;
19新增: private static IntPtr hookKeyboardID = IntPtr.Zero;
20新增: private IntPtr keyboardHook;
21新增: public InputServicer()
22新增: {
23新增: keyboardProc = HookCallback;
24新增: }
25新增: public void Start()
26新增: {
27新增: // 设置键盘钩子
28新增: keyboardHook = Win32API.SetKeyboardHook(keyboardProc);
29新增: }
30新增:
31新增: private IntPtr HookCallback(
32新增: int nCode, IntPtr wParam, IntPtr lParam)
33新增: {
34新增: if (nCode >= 0)
35新增: {
36新增: Win32API.KeyboardHookStruct MyKeyboardHookStruct = (Win32API.KeyboardHookStruct)Marshal.PtrToStructure(lParam, typeof(Win32API.KeyboardHookStruct));
37新增:
38新增: Keys key = (Keys)MyKeyboardHookStruct.vkCode;
39新增:
40新增: // 键盘按下
41新增: if (wParam == (IntPtr)Win32API.WM_KEYDOWN)
42新增: {
43新增: OnKeyDownInput?.Invoke(this, key);
44新增: }
45新增:
46新增: // 键盘抬起
47新增: if ((wParam == (IntPtr)Win32API.WM_KEYUP || wParam == (IntPtr)Win32API.WM_SYSKEYUP))
48新增: {
49新增: OnKeyUpInput?.Invoke(this, key);
50新增: }
51新增: }
52新增: return Win32API.CallNextHookEx(hookKeyboardID, nCode, wParam, lParam);
53新增:
54新增: }
55新增: }
56新增:}
新增UI/Servicers/MainServicer.cs+33 −0看文件
@@ -0,0 +1,33 @@
1新增:using Core.Servicers.Interfaces;
2新增:using System;
3新增:using System.Collections.Generic;
4新增:using System.Linq;
5新增:using System.Text;
6新增:using System.Threading.Tasks;
7新增:
8新增:namespace UI.Servicers
9新增:{
10新增: public class MainServicer : IMainServicer
11新增: {
12新增: private readonly IMain main;
13新增: private readonly IThemeServicer themeServicer;
14新增: private readonly IInputServicer inputServicer;
15新增: public MainServicer(IMain main, IThemeServicer themeServicer, IInputServicer inputServicer)
16新增: {
17新增: this.main = main;
18新增: this.themeServicer = themeServicer;
19新增: this.inputServicer = inputServicer;
20新增: }
21新增: public void Start()
22新增: {
23新增: main.OnStarted += Main_OnStarted;
24新增: main.Run();
25新增: }
26新增:
27新增: private void Main_OnStarted(object sender, EventArgs e)
28新增: {
29新增: themeServicer.Init();
30新增: inputServicer.Start();
31新增: }
32新增: }
33新增:}
修改UI/UI.csproj+5 −0看文件
@@ -191,7 +191,12 @@
191191 <Compile Include="Models\UINotifyPropertyChanged.cs" />
192192 <Compile Include="Servicers\AppContextMenuServicer.cs" />
193193 <Compile Include="Servicers\IAppContextMenuServicer.cs" />
194新增: <Compile Include="Servicers\IInputServicer.cs" />
195新增: <Compile Include="Servicers\IMainServicer.cs" />
196新增: <Compile Include="Servicers\InputEventHandler.cs" />
197新增: <Compile Include="Servicers\InputServicer.cs" />
194198 <Compile Include="Servicers\IThemeServicer.cs" />
199新增: <Compile Include="Servicers\MainServicer.cs" />
195200 <Compile Include="Servicers\ThemeServicer.cs" />
196201 <Compile Include="ViewModels\CategoryAppListPageVM.cs" />
197202 <Compile Include="ViewModels\CategoryPageVM.cs" />
修改UI/ViewModels/ChartPageVM.cs+47 −22看文件
@@ -22,18 +22,21 @@ namespace UI.ViewModels
2222 private readonly IData data;
2323 private readonly MainViewModel mainVM;
2424 private readonly IAppContextMenuServicer appContextMenuServicer;
25删除:
25新增: private readonly IInputServicer inputServicer;
2626 public Command ToDetailCommand { get; set; }
27新增: public Command RefreshCommand { get; set; }
2728
28删除: public ChartPageVM(IData data, ICategorys categorys, MainViewModel mainVM, IAppContextMenuServicer appContextMenuServicer)
29新增: public ChartPageVM(IData data, ICategorys categorys, MainViewModel mainVM, IAppContextMenuServicer appContextMenuServicer, IInputServicer inputServicer)
2930 {
3031 this.data = data;
3132 this.categorys = categorys;
3233 this.mainVM = mainVM;
3334 this.appContextMenuServicer = appContextMenuServicer;
35新增: this.inputServicer = inputServicer;
3436
3537
3638 ToDetailCommand = new Command(new Action<object>(OnTodetailCommand));
39新增: RefreshCommand = new Command(new Action<object>(OnRefreshCommand));
3740
3841 TabbarData = new System.Collections.ObjectModel.ObservableCollection<string>()
3942 {
@@ -65,9 +68,12 @@ namespace UI.ViewModels
6568 LoadDayData();
6669
6770 PropertyChanged += ChartPageVM_PropertyChanged;
71新增: inputServicer.OnKeyUpInput += InputServicer_OnKeyUpInput;
6872
6973 AppContextMenu = appContextMenuServicer.GetContextMenu();
7074 }
75新增:
76新增:
7177 public override void Dispose()
7278 {
7379 base.Dispose();
@@ -90,6 +96,19 @@ namespace UI.ViewModels
9096
9197 }
9298 }
99新增: private void OnRefreshCommand(object obj)
100新增: {
101新增: LoadData();
102新增: }
103新增:
104新增: private void InputServicer_OnKeyUpInput(object sender, System.Windows.Forms.Keys key)
105新增: {
106新增: if(key== System.Windows.Forms.Keys.F5)
107新增: {
108新增: LoadData();
109新增: }
110新增: }
111新增:
93112
94113 private void ChartPageVM_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
95114 {
@@ -99,27 +118,8 @@ namespace UI.ViewModels
99118 }
100119 if (e.PropertyName == nameof(TabbarSelectedIndex))
101120 {
102删除: if (TabbarSelectedIndex == 0)
103删除: {
104删除: NameIndexStart = 0;
105删除:
106删除: LoadDayData();
107删除: }
108删除: else if (TabbarSelectedIndex == 1)
109删除: {
110删除: LoadWeekData();
111删除: }
112删除: else if (TabbarSelectedIndex == 2)
113删除: {
114删除: NameIndexStart = 1;
115删除:
116删除: LoadMonthlyData();
117删除: }
118删除: else if (TabbarSelectedIndex == 3)
119删除: {
120删除: LoadYearData();
121删除: }
122121
122新增: LoadData();
123123 }
124124 if (e.PropertyName == nameof(SelectedWeek))
125125 {
@@ -135,6 +135,31 @@ namespace UI.ViewModels
135135 }
136136 }
137137
138新增:
139新增: private void LoadData()
140新增: {
141新增: if (TabbarSelectedIndex == 0)
142新增: {
143新增: NameIndexStart = 0;
144新增:
145新增: LoadDayData();
146新增: }
147新增: else if (TabbarSelectedIndex == 1)
148新增: {
149新增: LoadWeekData();
150新增: }
151新增: else if (TabbarSelectedIndex == 2)
152新增: {
153新增: NameIndexStart = 1;
154新增:
155新增: LoadMonthlyData();
156新增: }
157新增: else if (TabbarSelectedIndex == 3)
158新增: {
159新增: LoadYearData();
160新增: }
161新增: }
162新增:
138163 /// <summary>
139164 /// 加载天数据
140165 /// </summary>
修改UI/ViewModels/DetailPageVM.cs+57 −64看文件
@@ -13,6 +13,7 @@ using UI.Controls;
1313using UI.Controls.Charts.Model;
1414using UI.Controls.Select;
1515using UI.Models;
16新增:using UI.Servicers;
1617
1718namespace UI.ViewModels
1819{
@@ -23,23 +24,29 @@ namespace UI.ViewModels
2324 private readonly IAppConfig appConfig;
2425 private readonly ICategorys categories;
2526 private readonly IAppData appData;
27新增: private readonly IInputServicer inputServicer;
2628
2729 private ConfigModel config;
2830 public Command BlockActionCommand { get; set; }
2931 public Command ClearSelectMonthDataCommand { get; set; }
3032 public Command InfoMenuActionCommand { get; set; }
33新增: public Command RefreshCommand { get; set; }
34新增:
3135 public DetailPageVM(
32删除: IData data, MainViewModel main, IAppConfig appConfig, ICategorys categories, IAppData appData)
36新增: IData data, MainViewModel main, IAppConfig appConfig, ICategorys categories, IAppData appData, IInputServicer inputServicer)
3337 {
3438 this.data = data;
3539 this.main = main;
3640 this.appConfig = appConfig;
3741 this.categories = categories;
3842 this.appData = appData;
43新增: this.inputServicer = inputServicer;
3944
4045 BlockActionCommand = new Command(new Action<object>(OnBlockActionCommand));
4146 ClearSelectMonthDataCommand = new Command(new Action<object>(OnClearSelectMonthDataCommand));
4247 InfoMenuActionCommand = new Command(new Action<object>(OnInfoMenuActionCommand));
48新增: RefreshCommand = new Command(new Action<object>(OnRefreshCommand));
49新增:
4350 Init();
4451 }
4552
@@ -89,7 +96,27 @@ namespace UI.ViewModels
8996 await LoadInfo();
9097
9198 LoadDayData();
99新增:
100新增: inputServicer.OnKeyUpInput += InputServicer_OnKeyUpInput;
101新增: }
102新增:
103新增: private async void InputServicer_OnKeyUpInput(object sender, System.Windows.Forms.Keys key)
104新增: {
105新增: if (key == System.Windows.Forms.Keys.F5)
106新增: {
107新增: // 刷新
108新增: LoadChartData();
109新增: await LoadData();
110新增: }
111新增: }
112新增:
113新增: private async void OnRefreshCommand(object obj)
114新增: {
115新增: // 刷新
116新增: LoadChartData();
117新增: await LoadData();
92118 }
119新增:
93120 private void OnInfoMenuActionCommand(object obj)
94121 {
95122 switch (obj.ToString())
@@ -193,26 +220,7 @@ namespace UI.ViewModels
193220 }
194221 if (e.PropertyName == nameof(TabbarSelectedIndex))
195222 {
196删除: if (TabbarSelectedIndex == 0)
197删除: {
198删除: NameIndexStart = 0;
199删除:
200删除: LoadDayData();
201删除: }
202删除: else if (TabbarSelectedIndex == 1)
203删除: {
204删除: LoadWeekData();
205删除: }
206删除: else if (TabbarSelectedIndex == 2)
207删除: {
208删除: NameIndexStart = 1;
209删除:
210删除: LoadMonthlyData();
211删除: }
212删除: else if (TabbarSelectedIndex == 3)
213删除: {
214删除: LoadYearData();
215删除: }
223新增: LoadChartData();
216224
217225 }
218226 if (e.PropertyName == nameof(SelectedWeek))
@@ -229,6 +237,33 @@ namespace UI.ViewModels
229237 }
230238 }
231239
240新增: /// <summary>
241新增: /// 加载柱状图图表数据
242新增: /// </summary>
243新增: private void LoadChartData()
244新增: {
245新增: if (TabbarSelectedIndex == 0)
246新增: {
247新增: NameIndexStart = 0;
248新增:
249新增: LoadDayData();
250新增: }
251新增: else if (TabbarSelectedIndex == 1)
252新增: {
253新增: LoadWeekData();
254新增: }
255新增: else if (TabbarSelectedIndex == 2)
256新增: {
257新增: NameIndexStart = 1;
258新增:
259新增: LoadMonthlyData();
260新增: }
261新增: else if (TabbarSelectedIndex == 3)
262新增: {
263新增: LoadYearData();
264新增: }
265新增: }
266新增:
232267 private void LoadCategorys(string categoryName)
233268 {
234269 var list = new List<SelectItemModel>();
@@ -267,50 +302,8 @@ namespace UI.ViewModels
267302 var link = config.Links.Where(m => m.ProcessList.Contains(App.Name)).FirstOrDefault();
268303 if (link != null)
269304 {
270删除: LinkApps = appData.GetAllApps().Where(m => link.ProcessList.Contains(m.Name) && m.Name!=App.Name).ToList();
305新增: LinkApps = appData.GetAllApps().Where(m => link.ProcessList.Contains(m.Name) && m.Name != App.Name).ToList();
271306 }
272删除:
273删除: //var today = data.GetProcess(App.ID, DateTime.Now);
274删除: //var yesterday = data.GetProcess(App.ID, DateTime.Now.AddDays(-1));
275删除:
276删除: //if (today != null)
277删除: //{
278删除: // TodayTime = Time.ToString(today.Time);
279删除: //}
280删除: //else
281删除: //{
282删除: // TodayTime = "暂无数据";
283删除: //}
284删除:
285删除: //if (yesterday != null)
286删除: //{
287删除: // int diffseconds = today != null ? today.Time - yesterday.Time : yesterday.Time;
288删除:
289删除: // string diffText = string.Empty;
290删除: // if (diffseconds != yesterday.Time)
291删除: // {
292删除: // if (diffseconds == 0)
293删除: // {
294删除: // // 无变化
295删除: // diffText = "持平";
296删除: // }
297删除: // else if (diffseconds > 0)
298删除: // {
299删除: // // 增加
300删除: // diffText = "增加了" + Time.ToString(diffseconds);
301删除: // }
302删除: // else
303删除: // {
304删除: // // 减少
305删除: // diffText = "减少了" + Time.ToString(Math.Abs(diffseconds));
306删除: // }
307删除: // }
308删除: // Yesterday = diffseconds == yesterday.Time ? "减少100%" : diffText;
309删除: //}
310删除: //else
311删除: //{
312删除: // Yesterday = "昨日未使用";
313删除: //}
314307 }
315308 }
316309 );
修改UI/ViewModels/IndexPageVM.cs+38 −12看文件
@@ -22,24 +22,31 @@ namespace UI.ViewModels
2222 public class IndexPageVM : IndexPageModel
2323 {
2424 public Command ToDetailCommand { get; set; }
25新增: public Command RefreshCommand { get; set; }
2526 private readonly IData data;
2627 private readonly MainViewModel main;
2728 private readonly IMain mainServicer;
2829 private readonly IAppContextMenuServicer appContextMenuServicer;
29删除:
30新增: private readonly IInputServicer inputServicer;
3031 public IndexPageVM(
31删除: IData data, MainViewModel main, IMain mainServicer, IAppContextMenuServicer appContextMenuServicer)
32新增: IData data, MainViewModel main, IMain mainServicer, IAppContextMenuServicer appContextMenuServicer, IInputServicer inputServicer)
3233 {
3334 this.data = data;
3435 this.main = main;
3536 this.mainServicer = mainServicer;
3637 this.appContextMenuServicer = appContextMenuServicer;
38新增: this.inputServicer = inputServicer;
3739
3840 ToDetailCommand = new Command(new Action<object>(OnTodetailCommand));
41新增: RefreshCommand = new Command(new Action<object>(OnRefreshCommand));
3942
4043 Init();
4144 }
4245
46新增: private void OnRefreshCommand(object obj)
47新增: {
48新增: LoadData();
49新增: }
4350
4451 public override void Dispose()
4552 {
@@ -57,11 +64,21 @@ namespace UI.ViewModels
5764 TabbarSelectedIndex = 1;
5865
5966 PropertyChanged += IndexPageVM_PropertyChanged;
60删除:
6167 LoadThisWeekData();
6268
6369 appContextMenuServicer.Init();
6470 AppContextMenu = appContextMenuServicer.GetContextMenu();
71新增:
72新增: inputServicer.OnKeyUpInput += InputServicer_OnKeyUpInput;
73新增: }
74新增:
75新增: private void InputServicer_OnKeyUpInput(object sender, System.Windows.Forms.Keys key)
76新增: {
77新增: if(key== System.Windows.Forms.Keys.F5)
78新增: {
79新增: // 重新加载数据
80新增: LoadData();
81新增: }
6582 }
6683
6784 private void OnTodetailCommand(object obj)
@@ -84,19 +101,29 @@ namespace UI.ViewModels
84101 {
85102 if (e.PropertyName == nameof(TabbarSelectedIndex))
86103 {
87删除: if (TabbarSelectedIndex == 1)
88删除: {
89删除: LoadThisWeekData();
90删除: }
91删除: else
92删除: {
93删除: LoadLastWeekData();
94删除: }
104新增: LoadData();
95105 }
96106 }
97107
98108 #region 读取数据
99109
110新增: private void LoadData()
111新增: {
112新增: if (IsLoading)
113新增: {
114新增: return;
115新增: }
116新增:
117新增: if (TabbarSelectedIndex == 1)
118新增: {
119新增: LoadThisWeekData();
120新增: }
121新增: else
122新增: {
123新增: LoadLastWeekData();
124新增: }
125新增: }
126新增:
100127 #region 本周数据
101128 private void LoadThisWeekData()
102129 {
@@ -127,7 +154,6 @@ namespace UI.ViewModels
127154 }
128155 #endregion
129156
130删除:
131157 #region 上周数据
132158 private void LoadLastWeekData()
133159 {
修改UI/Views/ChartPage.xaml+6 −2看文件
@@ -6,8 +6,12 @@
66 xmlns:local="clr-namespace:UI.Views" xmlns:charts="clr-namespace:UI.Controls.Charts" xmlns:Tabbar="clr-namespace:UI.Controls.Tabbar" xmlns:select="clr-namespace:UI.Controls.Select" xmlns:base="clr-namespace:UI.Controls.Base" xmlns:DatePickerBar="clr-namespace:UI.Controls.DatePickerBar"
77 mc:Ignorable="d"
88 d:DesignHeight="450" d:DesignWidth="800"
9删除: Title="ChartPage" Foreground="{DynamicResource StandardTextBrush}">
10删除:
9新增: Title="ChartPage" Foreground="{DynamicResource StandardTextBrush}" Background="Transparent">
10新增: <Page.ContextMenu>
11新增: <ContextMenu>
12新增: <MenuItem Header="刷新" Command="{Binding RefreshCommand}"/>
13新增: </ContextMenu>
14新增: </Page.ContextMenu>
1115 <StackPanel Margin="20">
1216 <TextBlock Text="统计" FontSize="18" Margin="0,5,0,20"/>
1317 <Tabbar:Tabbar Data="{Binding TabbarData}" SelectedIndex="{Binding TabbarSelectedIndex,Mode=TwoWay}" Width="180" HorizontalAlignment="Left"/>
修改UI/Views/DetailPage.xaml+6 −2看文件
@@ -9,8 +9,12 @@
99 d:DesignHeight="450" d:DesignWidth="800"
1010 Title="DetailPage"
1111 xmlns:btn="clr-namespace:UI.Controls.Button"
12删除: xmlns:base="clr-namespace:UI.Controls.Base" xmlns:Tabbar="clr-namespace:UI.Controls.Tabbar" Foreground="{DynamicResource StandardTextBrush}">
13删除:
12新增: xmlns:base="clr-namespace:UI.Controls.Base" xmlns:Tabbar="clr-namespace:UI.Controls.Tabbar" Foreground="{DynamicResource StandardTextBrush}" Background="Transparent">
13新增: <Page.ContextMenu>
14新增: <ContextMenu>
15新增: <MenuItem Header="刷新" Command="{Binding RefreshCommand}"/>
16新增: </ContextMenu>
17新增: </Page.ContextMenu>
1418 <StackPanel Margin="20">
1519 <TextBlock Text="查看" FontSize="18" Margin="0,0,0,20"/>
1620
修改UI/Views/IndexPage.xaml+7 −2看文件
@@ -8,9 +8,14 @@
88 mc:Ignorable="d"
99 d:DesignHeight="450" d:DesignWidth="800"
1010 Title="IndexPage"
11删除: Foreground="{DynamicResource StandardTextBrush}">
12删除:
11新增: Foreground="{DynamicResource StandardTextBrush}" Background="Transparent">
12新增: <Page.ContextMenu>
13新增: <ContextMenu>
14新增: <MenuItem Header="刷新" Command="{Binding RefreshCommand}"/>
15新增: </ContextMenu>
16新增: </Page.ContextMenu>
1317 <StackPanel Margin="20">
18新增:
1419 <!--<Border Width="60" Height="60" HorizontalAlignment="Left" RenderTransformOrigin="1,0.5">
1520 <Border.Effect>
1621 <DropShadowEffect BlurRadius="4" ShadowDepth="0" Direction="0" Opacity="1"/>