国内特效比漂亮的网站,eclipse网站开发环境搭建,做网站开视频网站,眉山网站建设兼职首页编辑与完成
indexview添加Listbox控件的鼠标双击行为 添加todo、memo的编辑命令indexviewmodel添加对应的更新事件处理 添加ToggleButton与后台的绑定 将ToggleButton的ischeck绑定到status属性添加bool int 转换器添加完成命令添加完成功能函数
Listbox添加行为
给行为…首页编辑与完成
indexview添加Listbox控件的鼠标双击行为 添加todo、memo的编辑命令indexviewmodel添加对应的更新事件处理 添加ToggleButton与后台的绑定 将ToggleButton的ischeck绑定到status属性添加bool int 转换器添加完成命令添加完成功能函数
Listbox添加行为
给行为添加命令空间
文件Mytodo.Views.IndexView.cs xmlns:ihttp://schemas.microsoft.com/xaml/behaviors添加行为事件
文件Mytodo.Views.IndexView.cs
i:Interaction.Triggersi:EventTrigger EventNameMouseDoubleClicki:InvokeCommandAction Command{Binding EditTodoCmd} CommandParameter{Binding ElementNametodolbox, PathSelectedItem} //i:EventTrigger
/i:Interaction.Triggers
i:Interaction.Triggersi:EventTrigger EventNameMouseDoubleClicki:InvokeCommandAction Command{Binding EditTodoCmd} CommandParameter{Binding ElementNametodolbox, PathSelectedItem} //i:EventTrigger
/i:Interaction.Triggers后台添加对应的命令并初始化
文件Mytodo.Views.IndexViewmodel.cs
/// summary
/// 命令编辑备忘
/// /summary
public DelegateCommandMemoDto EditMemoCmd { get;private set; }/// summary
/// 命令编辑待办
/// /summary
public DelegateCommandToDoDto EditTodoCmd { get; private set; }
//初始化命令
EditMemoCmd new DelegateCommandMemoDto(Addmemo);
EditTodoCmd new DelegateCommandToDoDto(Addtodo);添加命令方法
文件Mytodo.Views.IndexViewmodel.cs
/// summary
/// 添加待办事项
/// /summary
async void Addtodo(ToDoDto model)
{DialogParameters param new DialogParameters();if (model ! null)param.Add(Value, model);var dialogres await dialog.ShowDialog(AddTodoView, param);var newtodo dialogres.Parameters.GetValueToDoDto(Value);if (newtodo null || string.IsNullOrEmpty(newtodo.Title) || (string.IsNullOrEmpty(newtodo.Content)))return;if (dialogres.Result ButtonResult.OK){try{if (newtodo.Id 0){var updres await toDoService.UpdateAsync(newtodo);if (updres.Status){var todo TodoDtos.FirstOrDefault(xx.Id.Equals(newtodo.Id));//更新信息todo.Content newtodo.Content;todo.Title newtodo.Title;todo.Status newtodo.Status;}}else{//添加内容 //更新数据库数据var addres await toDoService.AddAsync(newtodo);//更新UI数据if (addres.Status){TodoDtos.Add(addres.Result);}}}catch {}finally{UpdateLoding(false);}}}/// summary
/// 添加备忘录
/// /summary
async void Addmemo(MemoDto model)
{DialogParameters param new DialogParameters();if (model ! null)param.Add(Value, model);var dialogres await dialog.ShowDialog(AddMemoView, param);if (dialogres.Result ButtonResult.OK){try{var newmemo dialogres.Parameters.GetValueMemoDto(Value);if (newmemo ! null string.IsNullOrWhiteSpace(newmemo.Content) string.IsNullOrWhiteSpace(newmemo.Title))return;if (newmemo.Id 0){var updres await memoService.UpdateAsync(newmemo);if (updres.Status){//var memo MemoDtos.FindFirst(predicate: x x.Id newmemo.Id);var memo MemoDtos.FirstOrDefault( x x.Id.Equals( newmemo.Id));//更新信息memo.Content newmemo.Content;memo.Title newmemo.Title;}}else{//添加内容var addres await memoService.AddAsync(newmemo);//更新UI数据if (addres.Status){MemoDtos.Add(addres.Result);}}}catch{}finally{UpdateLoding(false);}}
}添加ToggleButton绑定与check事件
添加转换器
添加文件:Mytodo.Common.Converters.BoolInt_TConverter.cs
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Data;namespace Mytodo.Common.Converters
{public class BoolInt_TConverter : IValueConverter{/// summary/// int to bool/// /summary/// param namevalue/param/// param nametargetType/param/// param nameparameter/param/// param nameculture/param/// returns/returnspublic object Convert(object value, Type targetType, object parameter, CultureInfo culture){if(value!nullint.TryParse(value.ToString(),out int result)){if(result0)return true;elsereturn false;}return false;}/// summary/// bool to int /// /summary/// param namevalue/param/// param nametargetType/param/// param nameparameter/param/// param nameculture/param/// returns/returnspublic object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture){if (value ! null bool.TryParse(value.ToString(), out bool result)){if (result)return 0;elsereturn 1;}return false;}}
}
添加转换器添加命令
修改文件Mytodo.Views.IndexView.xaml
添加命名空间 xmlns:cvclr-namespace:Mytodo.Common.Converters添加资源 UserControl.ResourcesResourceDictionarycv:BoolInt_TConverter x:KeyBoolInt_TConverter //ResourceDictionary/UserControl.Resources绑定命令添加转换器 ToggleButtonWidth40Command{Binding DataContext.ToDoCompltedCommand, RelativeSource{RelativeSource ModeFindAncestor,AncestorTypeItemsControl}}CommandParameter{Binding }DockPanel.DockRightIsChecked{Binding Status, Converter{StaticResource BoolInt_TConverter}, ModeTwoWay} /
StackPanel定义命令并初始化 /// summary
/// Todo完成命令
/// /summary
public DelegateCommandToDoDto ToDoCompltedCommand { get; set; }
public IndexViewModel(IContainerProvider provider,IDialogHostService dialog) : base(provider)
{//实例化接口this.toDoService provider.ResolveITodoService();this.memoService provider.ResolveIMemoService();//实例化对象MemoDtos new ObservableCollectionMemoDto();TodoDtos new ObservableCollectionToDoDto();//初始化命令EditMemoCmd new DelegateCommandMemoDto(Addmemo);EditTodoCmd new DelegateCommandToDoDto(Addtodo);ToDoCompltedCommand new DelegateCommandToDoDto(Compete);ExecuteCommand new DelegateCommandstring(Execute);this.dialog dialog;CreatBars();
}初始化命令操作函数 /// summary
/// togglebutoon 的命令
/// /summary
/// param namedto/param
/// exception crefNotImplementedException/exception
async private void Compete(ToDoDto dto)
{if (dto null || string.IsNullOrEmpty(dto.Title) || (string.IsNullOrEmpty(dto.Content)))return;var updres await toDoService.UpdateAsync(dto);if (updres.Status){var todo TodoDtos.FirstOrDefault(x x.Id.Equals(dto.Id));//更新信息todo.Status dto.Status;}
}修改相关bug
修改Mytodo.ViewModels.cs
using Mytodo.Common.Models;
using Prism.Mvvm;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Reflection.Metadata;
using System.Text;
using System.Threading.Tasks;
using MyToDo.Share.Models;
using Prism.Commands;
using Prism.Services.Dialogs;
using Mytodo.Dialog;
using Mytodo.ViewModels;
using Mytodo.Service;
using Prism.Ioc;
using System.Diagnostics;
using Microsoft.VisualBasic;
using ImTools;
using DryIoc;
using MyToDo.Share;
using System.Windows;namespace Mytodo.ViewModels
{public class IndexViewModel:NavigationViewModel{#region 定义命令/// summary/// Todo完成命令/// /summarypublic DelegateCommandToDoDto ToDoCompltedCommand { get; set; }public DelegateCommandstring ExecuteCommand { get; set; }/// summary/// 命令编辑备忘/// /summarypublic DelegateCommandMemoDto EditMemoCmd { get;private set; }/// summary/// 命令编辑待办/// /summarypublic DelegateCommandToDoDto EditTodoCmd { get; private set; }#endregion#region 定义属性public string Title { get; set; }public ObservableCollectionMemoDto MemoDtos{get { return memoDtos; }set { memoDtos value; RaisePropertyChanged(); }}public ObservableCollectionToDoDto TodoDtos{get { return todoDtos; }set { todoDtos value; RaisePropertyChanged(); }}/// summary/// 首页任务条/// /summarypublic ObservableCollectionTaskBar TaskBars{get { return taskBars; }set { taskBars value; RaisePropertyChanged(); }}#endregion#region 定义重要命令#endregion#region 定义重要字段private readonly IDialogHostService dialog;private readonly ITodoService toDoService;private readonly IMemoService memoService;#endregion#region 定义普通字段private ObservableCollectionTaskBar taskBars;private ObservableCollectionToDoDto todoDtos;private ObservableCollectionMemoDto memoDtos;#endregion#region 命令相关方法/// summary/// togglebutoon 的命令/// /summary/// param namedto/param/// exception crefNotImplementedException/exceptionasync private void Compete(ToDoDto dto){if (dto null || string.IsNullOrEmpty(dto.Title) || (string.IsNullOrEmpty(dto.Content)))return;var updres await toDoService.UpdateAsync(dto);if (updres.Status){var todo TodoDtos.FirstOrDefault(x x.Id.Equals(dto.Id));//更新信息todo.Status dto.Status;}}/// summary/// 选择执行命令/// /summary/// param nameobj/paramvoid Execute(string obj){switch (obj){case 新增待办: Addtodo(null); break;case 新增备忘: Addmemo(null); break;}}/// summary/// 添加待办事项/// /summaryasync void Addtodo(ToDoDto model){DialogParameters param new DialogParameters();if (model ! null)param.Add(Value, model);var dialogres await dialog.ShowDialog(AddTodoView, param);var newtodo dialogres.Parameters.GetValueToDoDto(Value);if (newtodo null || string.IsNullOrEmpty(newtodo.Title) || (string.IsNullOrEmpty(newtodo.Content)))return;if (dialogres.Result ButtonResult.OK){try{if (newtodo.Id 0){var updres await toDoService.UpdateAsync(newtodo);if (updres.Status){var todo TodoDtos.FirstOrDefault(xx.Id.Equals(newtodo.Id));//更新信息todo.Content newtodo.Content;todo.Title newtodo.Title;todo.Status newtodo.Status;}}else{//添加内容 //更新数据库数据var addres await toDoService.AddAsync(newtodo);//更新UI数据if (addres.Status){TodoDtos.Add(addres.Result);}}}catch {}finally{UpdateLoding(false);}}}/// summary/// 添加备忘录/// /summaryasync void Addmemo(MemoDto model){DialogParameters param new DialogParameters();if (model ! null)param.Add(Value, model);var dialogres await dialog.ShowDialog(AddMemoView, param);if (dialogres.Result ButtonResult.OK){try{var newmemo dialogres.Parameters.GetValueMemoDto(Value);if (newmemo ! null string.IsNullOrWhiteSpace(newmemo.Content) string.IsNullOrWhiteSpace(newmemo.Title))return;if (newmemo.Id 0){var updres await memoService.UpdateAsync(newmemo);if (updres.Status){//var memo MemoDtos.FindFirst(predicate: x x.Id newmemo.Id);var memo MemoDtos.FirstOrDefault( x x.Id.Equals( newmemo.Id));//更新信息memo.Content newmemo.Content;memo.Title newmemo.Title;}}else{//添加内容var addres await memoService.AddAsync(newmemo);//更新UI数据if (addres.Status){MemoDtos.Add(addres.Result);}}}catch{}finally{UpdateLoding(false);}}}#endregion#region 其它方法#endregion#region 启动项相关void CreatBars(){Title 您好2022;TaskBars new ObservableCollectionTaskBar();TaskBars.Add(new TaskBar { Icon CalendarBlankOutline, Title 汇总, Color #FF00FF00, Content 27, Target });TaskBars.Add(new TaskBar { Icon CalendarMultipleCheck, Title 已完成, Color #6B238E, Content 24, Target });TaskBars.Add(new TaskBar { Icon ChartLine, Title 完成比例, Color #32CD99, Content 100%, Target });TaskBars.Add(new TaskBar { Icon CheckboxMarked, Title 备忘录, Color #5959AB, Content 13, Target });}#endregionpublic IndexViewModel(IContainerProvider provider,IDialogHostService dialog) : base(provider){//实例化接口this.toDoService provider.ResolveITodoService();this.memoService provider.ResolveIMemoService();//实例化对象MemoDtos new ObservableCollectionMemoDto();TodoDtos new ObservableCollectionToDoDto();//初始化命令EditMemoCmd new DelegateCommandMemoDto(Addmemo);EditTodoCmd new DelegateCommandToDoDto(Addtodo);ToDoCompltedCommand new DelegateCommandToDoDto(Compete);ExecuteCommand new DelegateCommandstring(Execute);this.dialog dialog;CreatBars();}}
}
修改Mytodo.AddMemoViewModel.cs
using MaterialDesignThemes.Wpf;
using Mytodo.Dialog;
using MyToDo.Share.Models;
using Prism.Commands;
using Prism.Mvvm;
using Prism.Services.Dialogs;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace Mytodo.ViewModels.Dialogs
{internal class AddMemoViewModel : BindableBase, IDialogHostAware{public AddMemoViewModel(){SaveCommand new DelegateCommand(Save);CancelCommand new DelegateCommand(Cancel);}private MemoDto model;public MemoDto Model{get { return model; }set { model value; RaisePropertyChanged(); }}private void Cancel(){if (DialogHost.IsDialogOpen(DialogHostName))DialogHost.Close(DialogHostName, new DialogResult(ButtonResult.No));}private void Save(){if (DialogHost.IsDialogOpen(DialogHostName)){//确定时,把编辑的实体返回并且返回OKDialogParameters param new DialogParameters();param.Add(Value, Model);DialogHost.Close(DialogHostName, new DialogResult(ButtonResult.OK, param));}}public string DialogHostName { get; set; }public DelegateCommand SaveCommand { get; set; }public DelegateCommand CancelCommand { get; set; }public void OnDialogOpend(IDialogParameters parameters){if (parameters.ContainsKey(Value)){Model parameters.GetValueMemoDto(Value);if(Model null) {Model new MemoDto();}c}elseModel new MemoDto();}}
}
修改Mytodo.AddTodoViewModel.cs
using MaterialDesignThemes.Wpf;
using Mytodo.Dialog;
using MyToDo.Share.Models;
using Prism.Commands;
using Prism.Mvvm;
using Prism.Services.Dialogs;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace Mytodo.ViewModels.Dialogs
{internal class AddTodoViewModel : BindableBase, IDialogHostAware{public AddTodoViewModel(){SaveCommand new DelegateCommand(Save);CancelCommand new DelegateCommand(Cancel);}private ToDoDto model;/// summary/// 新增或编辑的实体/// /summarypublic ToDoDto Model{get { return model; }set { model value; RaisePropertyChanged(); }}/// summary/// 取消/// /summaryprivate void Cancel(){if (DialogHost.IsDialogOpen(DialogHostName))DialogHost.Close(DialogHostName, new DialogResult(ButtonResult.No)); //取消返回NO告诉操作结束}/// summary/// 确定/// /summaryprivate void Save(){if (DialogHost.IsDialogOpen(DialogHostName)){//确定时,把编辑的实体返回并且返回OKDialogParameters param new DialogParameters();param.Add(Value, Model);DialogHost.Close(DialogHostName, new DialogResult(ButtonResult.OK, param));}}public string DialogHostName { get; set; }public DelegateCommand SaveCommand { get; set; }public DelegateCommand CancelCommand { get; set; }public void OnDialogOpend(IDialogParameters parameters){if (parameters.ContainsKey(Value)){Model parameters.GetValueToDoDto(Value);if (Model null){Model new ToDoDto();Model.Status 1;}}else{Model new ToDoDto();Model.Status 1;}}}
}