跳到主要内容

github/tai

公开

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

提交记录
新增Core/Models/CategoryModel.cs+28 −0看文件
@@ -0,0 +1,28 @@
1新增:using System;
2新增:using System.Collections.Generic;
3新增:using System.ComponentModel.DataAnnotations;
4新增:using System.Linq;
5新增:using System.Text;
6新增:using System.Threading.Tasks;
7新增:
8新增:namespace Core.Models
9新增:{
10新增: /// <summary>
11新增: /// 分类模型
12新增: /// </summary>
13新增: public class CategoryModel
14新增: {
15新增: [Key]
16新增: public int ID { get; set; }
17新增:
18新增: /// <summary>
19新增: /// 分类名称
20新增: /// </summary>
21新增: public string Name { get; set; }
22新增:
23新增: /// <summary>
24新增: /// 分类图标路径
25新增: /// </summary>
26新增: public string IconFile { get; set; }
27新增: }
28新增:}
新增Core/Servicers/Instances/Categorys.cs+110 −0看文件
@@ -0,0 +1,110 @@
1新增:using Core.Librarys.SQLite;
2新增:using Core.Models;
3新增:using Core.Servicers.Interfaces;
4新增:using System;
5新增:using System.Collections.Generic;
6新增:using System.Diagnostics;
7新增:using System.Linq;
8新增:using System.Text;
9新增:using System.Threading.Tasks;
10新增:using System.Windows.Threading;
11新增:
12新增:namespace Core.Servicers.Instances
13新增:{
14新增: public class Categorys : ICategorys
15新增: {
16新增: private List<CategoryModel> _categories;
17新增: private List<CategoryModel> _updateTempList;
18新增:
19新增: public Categorys()
20新增: {
21新增: DispatcherTimer dispatcherTimer = new DispatcherTimer();
22新增: dispatcherTimer.Interval = new TimeSpan(0, 30, 0);
23新增: dispatcherTimer.Tick += DispatcherTimer_Tick;
24新增: dispatcherTimer.Start();
25新增:
26新增:
27新增: this._categories = new List<CategoryModel>();
28新增: _updateTempList = new List<CategoryModel>();
29新增:
30新增: }
31新增: private void DispatcherTimer_Tick(object sender, EventArgs e)
32新增: {
33新增: SaveChanged();
34新增: }
35新增: public CategoryModel Create(CategoryModel category)
36新增: {
37新增: using (var db = new TaiDbContext())
38新增: {
39新增: db.Categorys.Add(category);
40新增: db.SaveChanges();
41新增: _categories.Add(category);
42新增: return category;
43新增: }
44新增: }
45新增:
46新增: public void Delete(CategoryModel category)
47新增: {
48新增: using (var db = new TaiDbContext())
49新增: {
50新增: var item = db.Categorys.Where(m => m.ID == category.ID).FirstOrDefault();
51新增: if (item != null)
52新增: {
53新增: db.Categorys.Remove(item);
54新增: db.SaveChanges();
55新增: _categories.Remove(category);
56新增: }
57新增: }
58新增:
59新增: }
60新增:
61新增: public List<CategoryModel> GetCategories()
62新增: {
63新增: return this._categories;
64新增: }
65新增:
66新增: public CategoryModel GetCategory(int id)
67新增: {
68新增: return _categories.Where(m => m.ID == id).FirstOrDefault();
69新增: }
70新增:
71新增: public void Load()
72新增: {
73新增: Debug.WriteLine("加载分类");
74新增: using (var db = new TaiDbContext())
75新增: {
76新增: this._categories = db.Categorys.ToList();
77新增: Debug.WriteLine("加载分类完成");
78新增:
79新增: }
80新增: }
81新增:
82新增: public void SaveChanged()
83新增: {
84新增: using (var db = new TaiDbContext())
85新增: {
86新增: foreach (var item in _updateTempList)
87新增: {
88新增: var model = db.Categorys.Find(item.ID);
89新增: if (model != null)
90新增: {
91新增:
92新增: model.IconFile = item.IconFile;
93新增: model.Name = item.Name;
94新增: }
95新增: }
96新增: db.SaveChanges();
97新增:
98新增: _updateTempList.Clear();
99新增: }
100新增: }
101新增:
102新增: public void Update(CategoryModel category)
103新增: {
104新增: if (!_updateTempList.Where(m => m.ID == category.ID).Any())
105新增: {
106新增: _updateTempList.Add(category);
107新增: }
108新增: }
109新增: }
110新增:}
新增Core/Servicers/Interfaces/ICategorys.cs+27 −0看文件
@@ -0,0 +1,27 @@
1新增:using Core.Models;
2新增:using System;
3新增:using System.Collections.Generic;
4新增:using System.Linq;
5新增:using System.Text;
6新增:using System.Threading.Tasks;
7新增:
8新增:namespace Core.Servicers.Interfaces
9新增:{
10新增: public interface ICategorys
11新增: {
12新增: /// <summary>
13新增: /// 获取所有分类
14新增: /// </summary>
15新增: /// <returns></returns>
16新增: List<CategoryModel> GetCategories();
17新增: /// <summary>
18新增: /// 加载已存储的分类数据,仅建议在启动时调用一次,无必要请勿再次调用
19新增: /// </summary>
20新增: void Load();
21新增: CategoryModel GetCategory(int id);
22新增: CategoryModel Create(CategoryModel category);
23新增: void Update(CategoryModel category);
24新增: void Delete(CategoryModel category);
25新增: void SaveChanged();
26新增: }
27新增:}
新增UI/Models/Category/CategoryModel.cs+14 −0看文件
@@ -0,0 +1,14 @@
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.Models.Category
8新增:{
9新增: public class CategoryModel
10新增: {
11新增: public int Count { get; set; }
12新增: public Core.Models.CategoryModel Data { get; set; }
13新增: }
14新增:}
新增UI/Models/CategoryAppListPageModel.cs+32 −0看文件
@@ -0,0 +1,32 @@
1新增:using Core.Models;
2新增:using System;
3新增:using System.Collections.Generic;
4新增:using System.Linq;
5新增:using System.Text;
6新增:using System.Threading.Tasks;
7新增:using System.Windows;
8新增:using UI.Models.CategoryAppList;
9新增:
10新增:namespace UI.Models
11新增:{
12新增: public class CategoryAppListPageModel : ModelBase
13新增: {
14新增: private UI.Models.Category.CategoryModel Category_;
15新增: public UI.Models.Category.CategoryModel Category { get { return Category_; } set { Category_ = value; OnPropertyChanged(); } }
16新增: private List<AppModel> Data_;
17新增:
18新增: public List<AppModel> Data { get { return Data_; } set { Data_ = value; OnPropertyChanged(); } }
19新增:
20新增: private List<ChooseAppModel> AppList_;
21新增: public List<ChooseAppModel> AppList { get { return AppList_; } set { AppList_ = value; OnPropertyChanged(); } }
22新增:
23新增: //private List<AppModel> ChooseAppList_;
24新增: //public List<AppModel> ChooseAppList { get { return ChooseAppList_; } set { ChooseAppList_ = value; OnPropertyChanged(); } }
25新增:
26新增: private Visibility ChooseVisibility_ = Visibility.Collapsed;
27新增: public Visibility ChooseVisibility { get { return ChooseVisibility_; } set { ChooseVisibility_ = value; OnPropertyChanged(); } }
28新增:
29新增: private AppModel SelectedItem_;
30新增: public AppModel SelectedItem { get { return SelectedItem_; } set { SelectedItem_ = value; OnPropertyChanged(); } }
31新增: }
32新增:}
新增UI/Models/CategoryPageModel.cs+59 −0看文件
@@ -0,0 +1,59 @@
1新增:using System;
2新增:using System.Collections.Generic;
3新增:using System.Collections.ObjectModel;
4新增:using System.Linq;
5新增:using System.Text;
6新增:using System.Threading.Tasks;
7新增:using System.Windows;
8新增:using UI.Models.Category;
9新增:
10新增:namespace UI.Models
11新增:{
12新增: public class CategoryPageModel : ModelBase
13新增: {
14新增: private ObservableCollection<CategoryModel> Data_;
15新增: public ObservableCollection<CategoryModel> Data
16新增: {
17新增: get { return Data_; }
18新增: set { Data_ = value; OnPropertyChanged(); }
19新增: }
20新增:
21新增: private CategoryModel SelectedItem_;
22新增: public CategoryModel SelectedItem { get { return SelectedItem_; } set { SelectedItem_ = value; OnPropertyChanged(); } }
23新增:
24新增:
25新增: private Visibility EditVisibility_ = Visibility.Collapsed;
26新增: public Visibility EditVisibility { get { return EditVisibility_; } set { EditVisibility_ = value; OnPropertyChanged(); } }
27新增:
28新增: private bool IsCreate_ = false;
29新增: /// <summary>
30新增: /// 是否是创建分类
31新增: /// </summary>
32新增: public bool IsCreate { get { return IsCreate_; } set { IsCreate_ = value; OnPropertyChanged(); } }
33新增:
34新增: private string EditName_;
35新增: /// <summary>
36新增: /// 编辑分类名称
37新增: /// </summary>
38新增: public string EditName { get { return EditName_; } set { EditName_ = value; OnPropertyChanged(); } }
39新增:
40新增: private string EditIconFile_;
41新增: /// <summary>
42新增: /// 编辑分类图标
43新增: /// </summary>
44新增: public string EditIconFile
45新增: {
46新增: get { return EditIconFile_; }
47新增: set { EditIconFile_ = value; OnPropertyChanged(); }
48新增: }
49新增:
50新增: private string EditErrorText_;
51新增: public string EditErrorText
52新增: {
53新增: get { return EditErrorText_; }
54新增: set { EditErrorText_ = value; OnPropertyChanged(); }
55新增: }
56新增: private bool IsEditError_ = false;
57新增: public bool IsEditError { get { return IsEditError_; } set { IsEditError_ = value; OnPropertyChanged(); } }
58新增: }
59新增:}
文件末尾没有换行
新增UI/ViewModels/CategoryAppListPageVM.cs+109 −0看文件
@@ -0,0 +1,109 @@
1新增:using Core.Models;
2新增:using Core.Servicers.Interfaces;
3新增:using System;
4新增:using System.Collections.Generic;
5新增:using System.Linq;
6新增:using System.Text;
7新增:using System.Threading.Tasks;
8新增:using UI.Controls;
9新增:using UI.Models;
10新增:using UI.Models.Category;
11新增:using UI.Models.CategoryAppList;
12新增:using UI.Views;
13新增:
14新增:namespace UI.ViewModels
15新增:{
16新增: public class CategoryAppListPageVM : CategoryAppListPageModel
17新增: {
18新增: private readonly IAppData appData;
19新增: private readonly MainViewModel mainVM;
20新增:
21新增: public Command ShowChooseCommand { get; set; }
22新增: public Command ChoosedCommand { get; set; }
23新增: public Command GotoDetailCommand { get; set; }
24新增: public CategoryAppListPageVM(IAppData appData, MainViewModel mainVM)
25新增: {
26新增: this.appData = appData;
27新增: this.mainVM = mainVM;
28新增:
29新增: ShowChooseCommand = new Command(new Action<object>(OnShowChoose));
30新增: ChoosedCommand = new Command(new Action<object>(OnChoosed));
31新增: GotoDetailCommand = new Command(new Action<object>(OnGotoDetail));
32新增: LoadData();
33新增: }
34新增:
35新增: private void OnGotoDetail(object obj)
36新增: {
37新增: if (SelectedItem != null)
38新增: {
39新增: mainVM.Data = SelectedItem;
40新增: mainVM.Uri = nameof(DetailPage);
41新增: }
42新增: }
43新增:
44新增: private void OnChoosed(object obj)
45新增: {
46新增: ChooseVisibility = System.Windows.Visibility.Collapsed;
47新增:
48新增: var data = new List<AppModel>();
49新增: foreach (var item in AppList)
50新增: {
51新增:
52新增: var app = appData.GetApp(item.App.ID);
53新增:
54新增: if (item.IsChoosed)
55新增: {
56新增: // 处理选中
57新增: if (app.CategoryID != Category.Data.ID)
58新增: {
59新增: app.CategoryID = Category.Data.ID;
60新增: app.Category = Category.Data;
61新增: appData.UpdateApp(app);
62新增: }
63新增:
64新增: data.Add(app);
65新增: }
66新增: else
67新增: {
68新增: // 处理取选
69新增: bool isHas = Data.Where(m => m.ID == item.App.ID).Any();
70新增: if (isHas)
71新增: {
72新增: app.CategoryID = 0;
73新增: app.Category = null;
74新增: appData.UpdateApp(app);
75新增: }
76新增: }
77新增: }
78新增: Data = data;
79新增: //LoadData();
80新增: }
81新增:
82新增: private void OnShowChoose(object obj)
83新增: {
84新增: ChooseVisibility = System.Windows.Visibility.Visible;
85新增: }
86新增:
87新增:
88新增: private void LoadData()
89新增: {
90新增: Category = mainVM.Data as UI.Models.Category.CategoryModel;
91新增: Data = appData.GetAppsByCategoryID(Category.Data.ID);
92新增:
93新增: var appList = new List<ChooseAppModel>();
94新增: foreach (var item in appData.GetAllApps())
95新增: {
96新增: var app = new ChooseAppModel();
97新增: app.App = item;
98新增: app.IsChoosed = item.CategoryID == Category.Data.ID;
99新增: app.Value.Name = item.Name;
100新增: app.Value.Img = item.IconFile;
101新增:
102新增: appList.Add(app);
103新增: }
104新增:
105新增: AppList = appList;
106新增: //ChooseAppList = Data;
107新增: }
108新增: }
109新增:}
新增UI/ViewModels/CategoryPageVM.cs+233 −0看文件
@@ -0,0 +1,233 @@
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新增:using UI.Controls;
8新增:using UI.Models;
9新增:using UI.Models.Category;
10新增:using UI.Views;
11新增:
12新增:namespace UI.ViewModels
13新增:{
14新增: public class CategoryPageVM : CategoryPageModel
15新增: {
16新增: private readonly ICategorys categorys;
17新增: private readonly MainViewModel mainVM;
18新增: private readonly IAppData appData;
19新增: public Command GotoAppListCommand { get; set; }
20新增: /// <summary>
21新增: /// 打开编辑命令
22新增: /// </summary>
23新增: public Command EditCommand { get; set; }
24新增: /// <summary>
25新增: /// 完成编辑命令
26新增: /// </summary>
27新增: public Command EditDoneCommand { get; set; }
28新增: /// <summary>
29新增: /// 取消编辑
30新增: /// </summary>
31新增: public Command EditCloseCommand { get; set; }
32新增: /// <summary>
33新增: /// 删除分类
34新增: /// </summary>
35新增: public Command DelCommand { get; set; }
36新增:
37新增: public CategoryPageVM(ICategorys categorys, MainViewModel mainVM, IAppData appData)
38新增: {
39新增: this.categorys = categorys;
40新增: this.mainVM = mainVM;
41新增: this.appData = appData;
42新增:
43新增: GotoAppListCommand = new Command(new Action<object>(OnGotoAppList));
44新增: EditCommand = new Command(new Action<object>(OnEdit));
45新增: EditDoneCommand = new Command(new Action<object>(OnEditDone));
46新增: EditCloseCommand = new Command(new Action<object>(OnEditClose));
47新增: DelCommand = new Command(new Action<object>(OnDel));
48新增:
49新增:
50新增: LoadData();
51新增:
52新增: PropertyChanged += CategoryPageVM_PropertyChanged;
53新增: }
54新增: private void OnDel(object obj)
55新增: {
56新增: if (SelectedItem == null)
57新增: {
58新增: return;
59新增: }
60新增: var category = categorys.GetCategory(SelectedItem.Data.ID);
61新增: if (category != null)
62新增: {
63新增: categorys.Delete(category);
64新增: var apps = appData.GetAppsByCategoryID(category.ID);
65新增: foreach (var app in apps)
66新增: {
67新增: app.CategoryID = 0;
68新增: app.Category = null;
69新增: appData.UpdateApp(app);
70新增: }
71新增: categorys.SaveChanged();
72新增:
73新增: // 从界面移除
74新增:
75新增: Data.Remove(SelectedItem);
76新增: mainVM.Toast("分类已删除", Controls.Window.ToastType.Success);
77新增:
78新增: }
79新增: }
80新增: private void OnEditClose(object obj)
81新增: {
82新增: EditVisibility = System.Windows.Visibility.Collapsed;
83新增: }
84新增: private void OnEditDone(object obj)
85新增: {
86新增: //var c = categorys.GetCategory(123);
87新增: if (string.IsNullOrEmpty(EditName))
88新增: {
89新增: IsEditError = true;
90新增: EditErrorText = "分类名称不能为空";
91新增: return;
92新增: }
93新增: if (string.IsNullOrEmpty(EditIconFile))
94新增: {
95新增: mainVM.Toast("请选择一个分类图标", Controls.Window.ToastType.Error, Controls.Base.IconTypes.CriticalErrorSolid);
96新增: return;
97新增: }
98新增:
99新增: if (IsCreate)
100新增: {
101新增: // 创建分类
102新增:
103新增: // 判断重复分类名称
104新增: if (Data.Where(m => m.Data.Name == EditName).Any())
105新增: {
106新增: mainVM.Toast("分类名称已存在", Controls.Window.ToastType.Error, Controls.Base.IconTypes.CriticalErrorSolid);
107新增: return;
108新增: }
109新增:
110新增: mainVM.Toast("创建完成", Controls.Window.ToastType.Success);
111新增:
112新增: EditVisibility = System.Windows.Visibility.Collapsed;
113新增:
114新增: var res = categorys.Create(new Core.Models.CategoryModel()
115新增: {
116新增: Name = EditName,
117新增: IconFile = EditIconFile,
118新增: });
119新增:
120新增:
121新增: Data.Add(new CategoryModel()
122新增: {
123新增: Data = res,
124新增: Count = 0
125新增: });
126新增:
127新增:
128新增: }
129新增: else
130新增: {
131新增: // 编辑分类
132新增:
133新增: // 判断重复分类名称
134新增: if (Data.Where(m => m.Data.Name == EditName && m.Data.ID != SelectedItem.Data.ID).Any())
135新增: {
136新增: mainVM.Toast("分类名称已存在", Controls.Window.ToastType.Error, Controls.Base.IconTypes.CriticalErrorSolid);
137新增: return;
138新增: }
139新增: if (EditName == SelectedItem.Data.Name && EditIconFile == SelectedItem.Data.IconFile)
140新增: {
141新增: mainVM.Toast("没有修改");
142新增: EditVisibility = System.Windows.Visibility.Collapsed;
143新增: return;
144新增: }
145新增: mainVM.Toast("已更新", Controls.Window.ToastType.Success);
146新增:
147新增: var category = categorys.GetCategory(SelectedItem.Data.ID);
148新增: if (category != null)
149新增: {
150新增: category.Name = EditName;
151新增: category.IconFile = EditIconFile;
152新增: categorys.Update(category);
153新增: categorys.SaveChanged();
154新增: }
155新增:
156新增: var item = Data.Where(m => m.Data.ID == SelectedItem.Data.ID).FirstOrDefault();
157新增:
158新增: var changedItem = new CategoryModel()
159新增: {
160新增: Count = item.Count,
161新增: Data = new Core.Models.CategoryModel()
162新增: {
163新增: ID = item.Data.ID,
164新增: Name = EditName,
165新增: IconFile = EditIconFile,
166新增: }
167新增: };
168新增:
169新增: int editItemIndex = Data.IndexOf(item);
170新增: if (editItemIndex != -1)
171新增: {
172新增: Data[editItemIndex] = changedItem;
173新增: }
174新增:
175新增: EditVisibility = System.Windows.Visibility.Collapsed;
176新增: }
177新增: }
178新增:
179新增: private void OnEdit(object obj)
180新增: {
181新增: EditVisibility = System.Windows.Visibility.Visible;
182新增: IsCreate = obj == null;
183新增:
184新增: if (obj != null)
185新增: {
186新增: var select = obj as CategoryModel;
187新增: EditName = select.Data.Name;
188新增: EditIconFile = select.Data.IconFile;
189新增: }
190新增: else
191新增: {
192新增: EditName = "";
193新增: EditIconFile = "";
194新增: }
195新增: }
196新增:
197新增: private void CategoryPageVM_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
198新增: {
199新增: if (e.PropertyName == nameof(SelectedItem))
200新增: {
201新增: //GotoAppList();
202新增: }
203新增: }
204新增:
205新增: private void OnGotoAppList(object obj)
206新增: {
207新增: GotoAppList();
208新增: }
209新增:
210新增: private void LoadData()
211新增: {
212新增: Data = new System.Collections.ObjectModel.ObservableCollection<CategoryModel>();
213新增: foreach (var item in categorys.GetCategories())
214新增: {
215新增: Data.Add(new CategoryModel()
216新增: {
217新增: Count = appData.GetAppsByCategoryID(item.ID).Count,
218新增: Data = item
219新增: });
220新增: }
221新增: }
222新增:
223新增: private void GotoAppList()
224新增: {
225新增: if (SelectedItem != null)
226新增: {
227新增: mainVM.Data = SelectedItem;
228新增: mainVM.Uri = nameof(CategoryAppListPage);
229新增: SelectedItem = null;
230新增: }
231新增: }
232新增: }
233新增:}
新增UI/Views/CategoryAppListPage.xaml+161 −0看文件
@@ -0,0 +1,161 @@
1新增:<Page xmlns:Button="clr-namespace:UI.Controls.Button" x:Class="UI.Views.CategoryAppListPage"
2新增: xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3新增: xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4新增: xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
5新增: xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
6新增: xmlns:local="clr-namespace:UI.Views" xmlns:base="clr-namespace:UI.Controls.Base" xmlns:select="clr-namespace:UI.Controls.Select" xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
7新增: mc:Ignorable="d"
8新增: d:DesignHeight="450" d:DesignWidth="800"
9新增: Title="CategoryAppListPage">
10新增:
11新增: <Grid>
12新增: <!--选择应用-->
13新增: <Grid Visibility="{Binding ChooseVisibility}" Panel.ZIndex="2" Margin="0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
14新增: <Border Background="Black" Opacity=".7"/>
15新增: <Border Height="460" Background="White" CornerRadius="10" BorderBrush="#ccc" BorderThickness="1" Margin="50" VerticalAlignment="Top">
16新增: <Grid>
17新增: <Grid.RowDefinitions>
18新增: <RowDefinition Height="40"/>
19新增: <RowDefinition Height="*"/>
20新增: <RowDefinition Height="80"/>
21新增:
22新增: </Grid.RowDefinitions>
23新增: <TextBlock Text="选择应用" VerticalAlignment="Center" Margin="10,0,0,0"/>
24新增: <ListView ItemsSource="{Binding AppList}" Margin="20" Grid.Row="1">
25新增: <ListBox.Resources>
26新增: <Style TargetType="{x:Type ListView}">
27新增: <Setter Property="OverridesDefaultStyle" Value="True"/>
28新增:
29新增: <Setter Property="Template">
30新增: <Setter.Value>
31新增: <ControlTemplate TargetType="{x:Type ListView}">
32新增: <ScrollViewer>
33新增: <ItemsPresenter />
34新增: </ScrollViewer>
35新增: </ControlTemplate>
36新增: </Setter.Value>
37新增: </Setter>
38新增: </Style>
39新增: <Style TargetType="{x:Type ListViewItem}">
40新增: <Setter Property="OverridesDefaultStyle" Value="True"/>
41新增: <Setter Property="Template">
42新增: <Setter.Value>
43新增: <ControlTemplate TargetType="{x:Type ListViewItem}">
44新增: <Border>
45新增: <ContentPresenter/>
46新增: </Border>
47新增:
48新增: </ControlTemplate>
49新增: </Setter.Value>
50新增: </Setter>
51新增:
52新增: </Style>
53新增: </ListBox.Resources>
54新增: <ListBox.ItemsPanel>
55新增: <ItemsPanelTemplate>
56新增: <StackPanel/>
57新增: </ItemsPanelTemplate>
58新增: </ListBox.ItemsPanel>
59新增: <ListView.ItemTemplate>
60新增: <DataTemplate>
61新增: <StackPanel >
62新增: <Border HorizontalAlignment="Stretch">
63新增: <select:Option HorizontalAlignment="Stretch" IsChecked="{Binding IsChoosed,Mode=TwoWay}" Value="{Binding Value}"/>
64新增:
65新增: </Border>
66新增:
67新增: </StackPanel>
68新增: </DataTemplate>
69新增: </ListView.ItemTemplate>
70新增: </ListView>
71新增:
72新增: <Button:Button Grid.Row="2" HorizontalAlignment="Right" Content="完成" Width="120" Margin="0,0,10,0" VerticalAlignment="Center" Command="{Binding ChoosedCommand}"/>
73新增: </Grid>
74新增:
75新增: </Border>
76新增: </Grid>
77新增: <StackPanel Margin="20">
78新增: <StackPanel Orientation="Horizontal" Margin="0,0,0,20">
79新增: <TextBlock FontSize="18" Text="分类"/>
80新增: <base:Icon IconType="Forward" Margin="10,0" FontSize="12" Foreground="#ccc"/>
81新增: <TextBlock FontSize="18" Text="{Binding Category.Data.Name}"/>
82新增:
83新增: </StackPanel>
84新增: <TextBlock Text="应用列表"/>
85新增:
86新增: <Button:Button Content="选择" HorizontalAlignment="Right" Width="150" Command="{Binding ShowChooseCommand}"/>
87新增: <ListView ItemsSource="{Binding Data}" SelectedItem="{Binding SelectedItem,Mode=TwoWay}" Margin="0,20,0,0">
88新增: <i:Interaction.Triggers>
89新增: <i:EventTrigger EventName="MouseLeftButtonUp">
90新增: <i:InvokeCommandAction Command="{Binding GotoDetailCommand}"
91新增: CommandParameter="{Binding SelectedItem}" />
92新增: </i:EventTrigger>
93新增: </i:Interaction.Triggers>
94新增: <ListBox.Resources>
95新增: <Style TargetType="{x:Type ListView}">
96新增: <Setter Property="OverridesDefaultStyle" Value="True"/>
97新增:
98新增: <Setter Property="Template">
99新增: <Setter.Value>
100新增: <ControlTemplate TargetType="{x:Type ListView}">
101新增: <Border>
102新增: <ItemsPresenter />
103新增: </Border>
104新增: </ControlTemplate>
105新增: </Setter.Value>
106新增: </Setter>
107新增: </Style>
108新增: <Style TargetType="{x:Type ListViewItem}">
109新增: <Setter Property="OverridesDefaultStyle" Value="True"/>
110新增: <Setter Property="Template">
111新增: <Setter.Value>
112新增: <ControlTemplate TargetType="{x:Type ListViewItem}">
113新增: <Border BorderBrush="Transparent" BorderThickness="2" x:Name="Border" Background="White" Margin="0,0,0,10" Padding="15" CornerRadius="10">
114新增: <ContentPresenter/>
115新增: </Border>
116新增: <ControlTemplate.Triggers>
117新增: <Trigger Property="IsMouseOver" Value="True">
118新增: <!--<Setter TargetName="Border" Property="Background" Value="#FFE8E6FF"/>-->
119新增: <Setter TargetName="Border" Property="BorderBrush" Value="#2b20d9"/>
120新增:
121新增: </Trigger>
122新增: </ControlTemplate.Triggers>
123新增: </ControlTemplate>
124新增: </Setter.Value>
125新增: </Setter>
126新增:
127新增: </Style>
128新增: </ListBox.Resources>
129新增: <ListBox.ItemsPanel>
130新增: <ItemsPanelTemplate>
131新增: <StackPanel/>
132新增: </ItemsPanelTemplate>
133新增: </ListBox.ItemsPanel>
134新增: <ListView.ItemTemplate>
135新增: <DataTemplate>
136新增:
137新增: <WrapPanel Orientation="Horizontal">
138新增: <Border >
139新增:
140新增:
141新增: <Grid>
142新增: <Grid.ColumnDefinitions>
143新增: <ColumnDefinition Width="50"/>
144新增: <ColumnDefinition Width="*"/>
145新增: </Grid.ColumnDefinitions>
146新增: <Border>
147新增: <base:Img Width="25" URL="{Binding IconFile}"/>
148新增: </Border>
149新增: <TextBlock Margin="10,0,0,0" VerticalAlignment="Center" Grid.Column="1" HorizontalAlignment="Center" Text="{Binding Name}" />
150新增:
151新增:
152新增: </Grid>
153新增: </Border>
154新增:
155新增: </WrapPanel>
156新增: </DataTemplate>
157新增: </ListView.ItemTemplate>
158新增: </ListView>
159新增: </StackPanel>
160新增: </Grid>
161新增:</Page>
新增UI/Views/CategoryAppListPage.xaml.cs+30 −0看文件
@@ -0,0 +1,30 @@
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;
7新增:using System.Windows.Controls;
8新增:using System.Windows.Data;
9新增:using System.Windows.Documents;
10新增:using System.Windows.Input;
11新增:using System.Windows.Media;
12新增:using System.Windows.Media.Imaging;
13新增:using System.Windows.Navigation;
14新增:using System.Windows.Shapes;
15新增:using UI.ViewModels;
16新增:
17新增:namespace UI.Views
18新增:{
19新增: /// <summary>
20新增: /// CategoryAppListPage.xaml 的交互逻辑
21新增: /// </summary>
22新增: public partial class CategoryAppListPage : Page
23新增: {
24新增: public CategoryAppListPage(CategoryAppListPageVM vm)
25新增: {
26新增: InitializeComponent();
27新增: DataContext = vm;
28新增: }
29新增: }
30新增:}
新增UI/Views/CategoryPage.xaml+156 −0看文件
@@ -0,0 +1,156 @@
1新增:<Page x:Class="UI.Views.CategoryPage"
2新增: xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3新增: xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4新增: xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
5新增: xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
6新增: xmlns:local="clr-namespace:UI.Views" xmlns:base="clr-namespace:UI.Controls.Base" xmlns:Button="clr-namespace:UI.Controls.Button" xmlns:input="clr-namespace:UI.Controls.Input" xmlns:select="clr-namespace:UI.Controls.Select"
7新增: mc:Ignorable="d"
8新增: xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
9新增: d:DesignHeight="450" d:DesignWidth="800"
10新增: Title="CategoryPage">
11新增:
12新增:
13新增: <Grid>
14新增:
15新增: <!--编辑-->
16新增: <Grid Visibility="{Binding EditVisibility}" Panel.ZIndex="2" Margin="0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
17新增: <Border Background="Black" Opacity=".7"/>
18新增: <Border Height="460" Background="White" CornerRadius="10" BorderBrush="#ccc" BorderThickness="1" Margin="50" VerticalAlignment="Top">
19新增: <Grid>
20新增: <Grid.RowDefinitions>
21新增: <RowDefinition Height="40"/>
22新增: <RowDefinition Height="*"/>
23新增: <RowDefinition Height="80"/>
24新增:
25新增: </Grid.RowDefinitions>
26新增: <Grid>
27新增: <base:Text Content="?创建分类:编辑分类" Value="{Binding IsCreate}" VerticalAlignment="Center" Margin="10,0,0,0"/>
28新增: <Button:IconButton Foreground="#ccc" Icon="ChromeClose" HorizontalAlignment="Right" FontSize="12" Margin="0,0,10,0" Command="{Binding EditCloseCommand}"/>
29新增: </Grid>
30新增: <!--<TextBlock Text="编辑" VerticalAlignment="Center" Margin="10,0,0,0"/>-->
31新增: <StackPanel Grid.Row="1" Margin="10">
32新增: <TextBlock Text="分类名称"/>
33新增: <input:InputBox Error="{Binding EditErrorText}" IsShowError="{Binding IsEditError,Mode=TwoWay}" Text="{Binding EditName,Mode=TwoWay}" MaxLength="10" Margin="0,10,0,0"/>
34新增:
35新增: <TextBlock Text="分类图标" Margin="0,10,0,0"/>
36新增: <select:ImageSelect URL="{Binding EditIconFile,Mode=TwoWay}" ImageWidth="50" ImageHeight="50" HorizontalAlignment="Left" Margin="0,10,0,0" Width="100" Height="100" />
37新增: </StackPanel>
38新增:
39新增: <Button:Button Grid.Row="2" HorizontalAlignment="Right" Text="?创建:更新" Value="{Binding IsCreate}" Width="120" Margin="0,0,10,0" VerticalAlignment="Center" Command="{Binding EditDoneCommand}">
40新增:
41新增: </Button:Button>
42新增:
43新增:
44新增: </Grid>
45新增:
46新增: </Border>
47新增: </Grid>
48新增:
49新增:
50新增: <!--主内容-->
51新增: <StackPanel Margin="20">
52新增: <TextBlock Text="分类" FontSize="18" Margin="0,0,0,20"/>
53新增: <TextBlock Text="管理所有应用分类"/>
54新增: <Button:Button Content="创建分类" HorizontalAlignment="Right" Width="150" Command="{Binding EditCommand}"/>
55新增:
56新增:
57新增: <ListView Margin="10,20,10,0" ItemsSource="{Binding Data}" SelectedItem="{Binding SelectedItem,Mode=TwoWay}" ScrollViewer.HorizontalScrollBarVisibility="Disabled" >
58新增: <i:Interaction.Triggers>
59新增: <i:EventTrigger EventName="MouseLeftButtonUp">
60新增: <i:InvokeCommandAction Command="{Binding GotoAppListCommand}"
61新增: CommandParameter="{Binding SelectedItem}" />
62新增: </i:EventTrigger>
63新增: </i:Interaction.Triggers>
64新增: <!--<ListView.InputBindings>
65新增: <MouseBinding Gesture="LeftClick" Command="{Binding RelativeSource={RelativeSource AncestorType={x:Type Page}}, Path=DataContext.GotoAppListCommand}" CommandParameter="{Binding SelectedItem}"/>
66新增: </ListView.InputBindings>-->
67新增:
68新增: <ListView.ContextMenu>
69新增: <ContextMenu>
70新增: <MenuItem Header="查看分类应用列表" Command="{Binding GotoAppListCommand}" CommandParameter="{Binding SelectedItem}"/>
71新增:
72新增: <MenuItem Header="编辑" Command="{Binding EditCommand}" CommandParameter="{Binding SelectedItem}"/>
73新增: <MenuItem Header="删除分类" Command="{Binding DelCommand}" CommandParameter="{Binding SelectedItem}"/>
74新增: </ContextMenu>
75新增: </ListView.ContextMenu>
76新增: <ListBox.Resources>
77新增: <Style TargetType="{x:Type ListView}">
78新增: <Setter Property="OverridesDefaultStyle" Value="True"/>
79新增:
80新增: <Setter Property="Template">
81新增: <Setter.Value>
82新增: <ControlTemplate TargetType="{x:Type ListView}">
83新增: <Border>
84新增: <ItemsPresenter />
85新增: </Border>
86新增: </ControlTemplate>
87新增: </Setter.Value>
88新增: </Setter>
89新增: </Style>
90新增: <Style TargetType="{x:Type ListViewItem}">
91新增: <Setter Property="OverridesDefaultStyle" Value="True"/>
92新增: <Setter Property="Template">
93新增: <Setter.Value>
94新增: <ControlTemplate TargetType="{x:Type ListViewItem}">
95新增: <Border BorderBrush="Transparent" BorderThickness="2" x:Name="Border" Background="White" Margin="5" CornerRadius="10">
96新增:
97新增: <ContentPresenter/>
98新增: </Border>
99新增: <ControlTemplate.Triggers>
100新增: <Trigger Property="IsMouseOver" Value="True">
101新增: <!--<Setter TargetName="Border" Property="Background" Value="#FFE8E6FF"/>-->
102新增: <Setter TargetName="Border" Property="BorderBrush" Value="#2b20d9"/>
103新增:
104新增: </Trigger>
105新增: </ControlTemplate.Triggers>
106新增: </ControlTemplate>
107新增: </Setter.Value>
108新增: </Setter>
109新增:
110新增: </Style>
111新增: </ListBox.Resources>
112新增: <ListBox.ItemsPanel>
113新增: <ItemsPanelTemplate>
114新增: <WrapPanel/>
115新增: </ItemsPanelTemplate>
116新增: </ListBox.ItemsPanel>
117新增: <ListView.ItemTemplate>
118新增: <DataTemplate>
119新增:
120新增: <WrapPanel Orientation="Vertical">
121新增: <Border Width="150" Height="150">
122新增:
123新增: <Grid>
124新增: <Grid.RowDefinitions>
125新增: <RowDefinition Height="80"/>
126新增: <RowDefinition Height="30"/>
127新增: <RowDefinition Height="*"/>
128新增:
129新增: </Grid.RowDefinitions>
130新增: <Border>
131新增: <base:Img Width="50" Height="50" URL="{Binding Data.IconFile}"/>
132新增: </Border>
133新增: <TextBlock Foreground="#202020" HorizontalAlignment="Center" Grid.Row="1" Text="{Binding Data.Name}" FontSize="14"/>
134新增:
135新增: <Border Grid.Row="2" >
136新增: <Border Margin="10,0,0,0" CornerRadius="5" Background="#f9f9f9" HorizontalAlignment="Left" VerticalAlignment="Center" Padding="15,5">
137新增: <TextBlock Foreground="#FF737373">
138新增: <Run Text="{Binding Count}"/>
139新增: <Run Text="个应用"/>
140新增: </TextBlock>
141新增:
142新增: </Border>
143新增:
144新增: </Border>
145新增: </Grid>
146新增: </Border>
147新增:
148新增: </WrapPanel>
149新增: </DataTemplate>
150新增: </ListView.ItemTemplate>
151新增: </ListView>
152新增:
153新增: </StackPanel>
154新增:
155新增: </Grid>
156新增:</Page>
新增UI/Views/CategoryPage.xaml.cs+30 −0看文件
@@ -0,0 +1,30 @@
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;
7新增:using System.Windows.Controls;
8新增:using System.Windows.Data;
9新增:using System.Windows.Documents;
10新增:using System.Windows.Input;
11新增:using System.Windows.Media;
12新增:using System.Windows.Media.Imaging;
13新增:using System.Windows.Navigation;
14新增:using System.Windows.Shapes;
15新增:using UI.ViewModels;
16新增:
17新增:namespace UI.Views
18新增:{
19新增: /// <summary>
20新增: /// CategoryPage.xaml 的交互逻辑
21新增: /// </summary>
22新增: public partial class CategoryPage : Page
23新增: {
24新增: public CategoryPage(CategoryPageVM vm)
25新增: {
26新增: InitializeComponent();
27新增: DataContext = vm;
28新增: }
29新增: }
30新增:}