跳到主要内容

github/tai

公开

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

提交记录
新增UI/Controls/Models/PageModel.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新增:using System.Windows.Controls;
7新增:
8新增:namespace UI.Controls.Models
9新增:{
10新增: public class PageModel
11新增: {
12新增: /// <summary>
13新增: /// 页面实例
14新增: /// </summary>
15新增: public Page Instance { get; set; }
16新增: /// <summary>
17新增: /// 滚动条位置
18新增: /// </summary>
19新增: public double ScrollValue { get; set; }
20新增: }
21新增:}
修改UI/Controls/PageContainer.cs+36 −10看文件
@@ -7,6 +7,7 @@ using System.Threading.Tasks;
77using System.Windows;
88using System.Windows.Controls;
99using System.Windows.Input;
10新增:using UI.Controls.Models;
1011using UI.Models;
1112
1213namespace UI.Controls
@@ -61,6 +62,12 @@ namespace UI.Controls
6162 var control = d as PageContainer;
6263 if (e.NewValue != e.OldValue)
6364 {
65新增: string oldUri = e.OldValue.ToString();
66新增: if (control.PageCache.ContainsKey(oldUri))
67新增: {
68新增: PageModel page = control.PageCache[oldUri];
69新增: page.ScrollValue = control.ScrollViewer.VerticalOffset;
70新增: }
6471 control.LoadPage();
6572 }
6673 }
@@ -117,8 +124,9 @@ namespace UI.Controls
117124 private readonly string ProjectName;
118125 private List<string> Historys;
119126 public int Index = 0, OldIndex = 0;
120删除: private Dictionary<string, Page> PageCache;
127新增: private Dictionary<string, PageModel> PageCache;
121128 private bool IsBack = false;
129新增: private ScrollViewer ScrollViewer;
122130 public PageContainer()
123131 {
124132 DefaultStyleKey = typeof(PageContainer);
@@ -127,7 +135,7 @@ namespace UI.Controls
127135 BackCommand = new Command(new Action<object>(OnBackCommand));
128136 NavigationCommands.BrowseBack.InputGestures.Clear();
129137 NavigationCommands.BrowseForward.InputGestures.Clear();
130删除: PageCache = new Dictionary<string, Page>();
138新增: PageCache = new Dictionary<string, PageModel>();
131139 }
132140
133141
@@ -135,6 +143,8 @@ namespace UI.Controls
135143 {
136144 base.OnApplyTemplate();
137145
146新增: ScrollViewer = GetTemplateChild("ScrollViewer") as ScrollViewer;
147新增:
138148 Loaded += PageContainer_Loaded;
139149 Unloaded += PageContainer_Unloaded;
140150 }
@@ -151,6 +161,7 @@ namespace UI.Controls
151161 private void PageContainer_Loaded(object sender, RoutedEventArgs e)
152162 {
153163 Instance = this;
164新增:
154165 }
155166
156167 private void OnBackCommand(object obj)
@@ -174,9 +185,8 @@ namespace UI.Controls
174185 if (PageCache.ContainsKey(pageUri))
175186 {
176187 var page = PageCache[pageUri];
177删除: var vm = page.DataContext as ModelBase;
188新增: var vm = page.Instance.DataContext as ModelBase;
178189 vm?.Dispose();
179删除: page = null;
180190 PageCache.Remove(pageUri);
181191 }
182192 Historys.RemoveRange(preIndex, 1);
@@ -219,12 +229,12 @@ namespace UI.Controls
219229 }
220230 OldIndex = Index;
221231 }
222删除: Page page = GetPage();
232新增: PageModel page = GetPage();
223233
224234
225235 if (page != null)
226236 {
227删除: Content = page;
237新增: Content = page.Instance;
228238
229239 // 加入缓存
230240 if (!PageCache.ContainsKey(Uri))
@@ -232,6 +242,16 @@ namespace UI.Controls
232242 PageCache.Add(Uri, page);
233243 }
234244
245新增: // 滚动条位置处理
246新增: if (IsBack)
247新增: {
248新增: ScrollViewer.ScrollToVerticalOffset(page.ScrollValue);
249新增: }
250新增: else
251新增: {
252新增: ScrollViewer.ScrollToVerticalOffset(0);
253新增: }
254新增:
235255 OnLoadPaged?.Invoke(this, EventArgs.Empty);
236256 }
237257 else
@@ -242,7 +262,7 @@ namespace UI.Controls
242262 IsBack = false;
243263 }
244264
245删除: private Page GetPage()
265新增: private PageModel GetPage()
246266 {
247267 Page page = null;
248268 if (PageCache.ContainsKey(Uri))
@@ -258,12 +278,18 @@ namespace UI.Controls
258278 page.Unloaded += Page_Unloaded;
259279 }
260280 }
261删除: return page;
281新增: var newPage = new PageModel()
282新增: {
283新增: Instance = page,
284新增: ScrollValue = 0
285新增: };
286新增:
287新增: return newPage;
262288 }
263289 private void Page_Unloaded(object sender, RoutedEventArgs e)
264290 {
265291 Page page = (Page)sender;
266删除:
292新增:
267293 page.Unloaded -= Page_Unloaded;
268294 }
269295
@@ -274,7 +300,7 @@ namespace UI.Controls
274300 foreach (var key in PageCache.Keys)
275301 {
276302 var page = PageCache[key];
277删除: var vm = page.DataContext as ModelBase;
303新增: var vm = page.Instance.DataContext as ModelBase;
278304 vm?.Dispose();
279305 }
280306 PageCache.Clear();
修改UI/UI.csproj+1 −0看文件
@@ -145,6 +145,7 @@
145145 <Compile Include="Controls\Input\InputBox.cs" />
146146 <Compile Include="Controls\List\BaseList.cs" />
147147 <Compile Include="Controls\List\BaseListItem.cs" />
148新增: <Compile Include="Controls\Models\PageModel.cs" />
148149 <Compile Include="Controls\Navigation\Models\NavigationItemModel.cs" />
149150 <Compile Include="Controls\Navigation\Navigation.cs" />
150151 <Compile Include="Controls\Navigation\NavigationItem.cs" />