MVVM中的数据的刷新

2023年2月21日10:55:40

在我们用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中的数据的刷新

  • 作者:故仇
  • 原文链接:https://blog.csdn.net/weixin_44541154/article/details/117668126
    更新时间:2023年2月21日10:55:40 ,共 1910 字。