MVVM中的数据的刷新

首页 / 新闻资讯 / 正文

在我们用MVVM框架做项目,在做到新增、删除等功能的时候,新增和删除成功后就会遇到一个问题,那就是数据的刷新。
怎样做到刷新的呢,其实刷新说白了就是重新查询下数据,只要我们调用一下查询的方法
就可以了。
当我删除数据时,因为删除操作和数据查询操作可以在同一个ViewModel中,所以我们在写删除的时候可以直接调用查询方法。
这是我写的查询方法:

private void GetAllCommodityBy() { 	var list = (from tbCommodity in myModel.PW_Commodity                 join tbCommodtyType in myModel.PW_CommodityType on tbCommodity.CommodityTypeID equals tbCommodtyType.CommodityTypeID                 join tbUnit in myModel.PW_Unit on tbCommodity.UnitID equals tbUnit.UnitID                 join tbInventory in myModel.PW_Inventory on tbCommodity.InventoryID equals tbInventory.InventoryID                 select new CommodityVos                 {                      CommodityID=tbCommodity.CommodityID,                      InventoryID=tbInventory.InventoryID,                      CommodityNumber=tbCommodity.CommodityNumber,                      CommodityName=tbCommodity.CommodityName,                      CommodityTypeName=tbCommodtyType.CommodityTypeName,                      UnitName=tbUnit.UnitName,                      Specification=tbCommodity.Specification,                      InventoryFloor=tbInventory.InventoryFloor,                      TheCurrentInventory=tbInventory.TheCurrentInventory,                      WhetherGive=tbCommodity.WhetherGive,                      WhetherForbidden=tbCommodity.WhetherForbidden,                      TheDefaultSetting=tbCommodity.TheDefaultSetting,                      BarCode=tbCommodity.BarCode,                      Remark=tbCommodity.Remark     }).ToList();     Commodity = list;             } 

这是删除后调用查询方法:

if (myModel.SaveChanges() > 0)  {       MessageBox.Show("删除成功", "系统提示", MessageBoxButton.OK, MessageBoxImage.Information);       GetAllCommodityBy();   } 

这是删除前的表格:
MVVM中的数据的刷新
我选择最后一条数据删除
MVVM中的数据的刷新
当删除成功后点击确定,表格就会刷新了:
MVVM中的数据的刷新
而新增操作和查询操作不在一个ViewModel怎么办呢,这时候我们就要用到委托了。
我们在新增的ViewModel中声明一个委托:

//委托  public delegate void LodedSelect();  public event LodedSelect LodedCommodity; 

然后我们在查询的ViewModel中把查询方法赋值给这个委托:

private void AddCommodity(Window window) {                  CommodityAdd addOrCommodityWindow = new CommodityAdd();      var Commoditys = (addOrCommodityWindow.DataContext as 			   CommodityAddViewModel);      Commoditys.LodedCommodity += GetAllCommodityBy;      addOrCommodityWindow.Show();             } 

再然后我们在新增操作中用上这个委托就可以了。

if (myModel.SaveChanges() > 0)  {       MessageBox.Show("新增成功", "系统提示", MessageBoxButton.OK, MessageBoxImage.Information);       window1.Close();       LodedCommodity?.Invoke();  } 

在我刚才删除数据的表格上新增一条“榴莲”的数据,
MVVM中的数据的刷新
当我点击“确定”后,新增页面关闭并表格刷新:
MVVM中的数据的刷新

Top