提交记录新增Core/Models/CategoryModel.cs+28 −0看文件
新增Core/Servicers/Instances/Categorys.cs+110 −0看文件
新增Core/Servicers/Interfaces/ICategorys.cs+27 −0看文件
新增UI/Models/Category/CategoryModel.cs+14 −0看文件
新增UI/Models/CategoryAppListPageModel.cs+32 −0看文件
新增UI/Models/CategoryPageModel.cs+59 −0看文件
新增UI/ViewModels/CategoryAppListPageVM.cs+109 −0看文件
新增UI/ViewModels/CategoryPageVM.cs+233 −0看文件
新增UI/Views/CategoryAppListPage.xaml+161 −0看文件
新增UI/Views/CategoryAppListPage.xaml.cs+30 −0看文件
新增UI/Views/CategoryPage.xaml+156 −0看文件
新增UI/Views/CategoryPage.xaml.cs+30 −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 | 新增:} | |
| @@ -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 | 新增:} | |
| @@ -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 | 新增:} | |
| @@ -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 | 新增:} | |
| @@ -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 | 新增:} | |
| @@ -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 | 新增:} | |
| 文件末尾没有换行 | ||
| @@ -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 | 新增:} | |
| @@ -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 | 新增:} | |
| @@ -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> | |
| @@ -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 | 新增:} | |
| @@ -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> | |
| @@ -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 | 新增:} | |

