(十七)备忘录完善
1. model层
直接复制todo的修改一下,因为没有筛选功能,备忘录也没有状态码,要删除一些索引和状态
修改后代码
public class MemoViewModel : NavigationViewModel
{
public MemoViewModel(IMemoService service, IContainerProvider provider) : base(provider)
{
MemoDtos = new ObservableCollection<MemoDto>();
ExecuteCommand = new DelegateCommand<string>(Execute);
SelectedCommand = new DelegateCommand<MemoDto>(Selected);
DeleteCommand = new DelegateCommand<MemoDto>(Delete);
this.service = service;
}
private async void Delete(MemoDto obj)
{
try
{
UpdateLoading(true);
var deleteResult = await service.DeleteAsync(obj.Id);
if (deleteResult.Status)
{
var model = MemoDtos.FirstOrDefault(t => t.Id.Equals(obj.Id));
if (model != null)
{
MemoDtos.Remove(model);
}
}
}
finally
{
UpdateLoading(false);
}
}
private void Execute(string obj)
{
switch (obj)
{
case "新增": Add(); break;
case "查询": GetDataAsync(); break;
case "保存": Save(); break;
}
}
private async void Save()//执行保存数据的逻辑
{
//首先判断是否符合条件
if (string.IsNullOrWhiteSpace(CurrentDto.Title) || string.IsNullOrWhiteSpace(CurrentDto.Content)) return;
UpdateLoading(true);
try
{
if (CurrentDto.Id > 0)
{//更新
var updateResult = await service.UpdateAsync(CurrentDto);
if (updateResult.Status)
{
var todo = MemoDtos.FirstOrDefault(t => t.Id == CurrentDto.Id);
if (todo != null)
{
todo.Title = CurrentDto.Title;
todo.Content = CurrentDto.Content;
}
}
IsRightDrawerOpen = false;
}
else
{//新增
var addResult = await service.AddAsync(CurrentDto);
if (addResult.Status)
{
MemoDtos.Add(addResult.Result);
IsRightDrawerOpen = false;
}
}
}
catch (Exception ex)
{
}
finally
{
UpdateLoading(false);
}
}
private string search;
public string Search//搜索条件
{
get { return search; }
set { search = value; RaisePropertyChanged(); }
}
private bool isRightDrawerOpen;
//右侧编辑窗口是否展开
public bool IsRightDrawerOpen
{
get { return isRightDrawerOpen; }
set { isRightDrawerOpen = value; RaisePropertyChanged(); }
}
//添加待办
private void Add()
{
CurrentDto = new MemoDto();
IsRightDrawerOpen = true;
}
private MemoDto currentDto;
//编辑选中对象/新增对象
public MemoDto CurrentDto
{
get { return currentDto; }
set { currentDto = value; RaisePropertyChanged(); }
}
private async void Selected(MemoDto obj)
{
try
{
UpdateLoading(true);
//为了选中数据库中的真实数据,需要通过服务查到数据库的真实数据
var memoResult = await service.GetFirstOfDefaultAsync(obj.Id);
if (memoResult.Status)
{
CurrentDto = memoResult.Result;
IsRightDrawerOpen = true;//右侧添加待办打开
}
}
catch (Exception ex)
{
}
finally
{
UpdateLoading(false);
}
}
public DelegateCommand<string> ExecuteCommand { get; private set; }
public DelegateCommand<MemoDto> SelectedCommand { get; private set; }
public DelegateCommand<MemoDto> DeleteCommand { get; private set; }
private ObservableCollection<MemoDto> memoDtos;
private readonly IMemoService service;
public ObservableCollection<MemoDto> MemoDtos
{
get { return memoDtos; }
set { memoDtos = value; RaisePropertyChanged(); }
}
//获取数据
async void GetDataAsync()
{
//打开加载数据页面
UpdateLoading(true);
var memoResult = await service.GetAllAsync(new QueryParameter()
{
PageIndex = 0,
PageSize = 100,
Search = Search,
});
if (memoResult.Status)
{
MemoDtos.Clear();
foreach (var item in memoResult.Result.Items)
{
MemoDtos.Add(item);
}
}
UpdateLoading(false);
}
//重写导航加载数据的方法
public override void OnNavigatedTo(NavigationContext navigationContext)
{
base.OnNavigatedTo(navigationContext);
GetDataAsync();
}
2. 页面
- 侧边栏绑定
![image]()
- 查询绑定
搜索一定是双向绑定不然没有通知更新,会搜索多次才有结果
![image]()
- 忙碌界面
![image]()
- 单个项备忘录DataTemplate可以复制,但是其中border没有了状态转换,背景设置好不用改变
- 优化
把model里面删除方法添加一个try,finally,把加载动画放到开头





浙公网安备 33010602011771号