• MVVM里面:把MODEL转换为VIEWMODE


    摘要:MVVM里面把数据库的MODEL转化为页面需要的VIEWMODEL,今天偷偷的学到了,记录一下,以后备用。

    EducationInfo是我定义的VIEWMODEL,页面展示个性化的数据

    args.Result是数据库里面的表结构model 

    需求:

    页面有一个列表,需要显示个性化的数据,其中有一个字段是显示数据库里面两个字段的合成字段,数据库存的时候是开始时间:1987-8-8与结束时间1988-8-8

    但是这一列数据最终展示的时候是 1987-1988。由于这个需求,也就写了VIEWMODEL这个东西。

    我页面显示数据的时候是用BINDING的方法, 


    1.(1)mvvm里面,只要维护这个东西,比如增加一条记录在页面上,就可以直接维护ObservableCollection,人家说这个是标准MVVM带的属性
       private ObservableCollection<EducationInfo> _education_info;
       (2)绑定的时候是这么绑定的:args.Result是model
       _education_info = new ObservableCollection<EducationInfo>(args.Result.Select(ei => new EducationInfo(ei)));

      全部代码
       private ObservableCollection<EducationInfo> _education_info; //viewmode
       public void BindDate(string strUserId)
            {
                Helper.XExpertProvider.GetEducationItem("8259cb9f-8e2b-4bcd-84a2-969918e9a13e", null,
                     (s, args) =>
                     {
                         if (args.Error != null)
                         {
                             MessageBox.Show(args.Error.Message);
                         }
                         if (args.Cancelled == true) return;
                        _education_info = new ObservableCollection<EducationInfo>(args.Result.Select(ei => new EducationInfo(ei)));
                         GVList.ItemsSource = _education_info;
                     }
                );

            }

    2.不是标准的MVVM,但是可以实现功能的
      1.我定义的VIEWMODE
      private IList<EducationInfo> _education_info;
      2.把MODEL转化为VIEWMODEL
          private IList<EducationInfo> _education_info;
          public void BindDate(string strUserId)
            {
                Helper.XExpertProvider.GetEducationItem("8259cb9f-8e2b-4bcd-84a2-969918e9a13e", null,
                     (s, args) =>
                     {
                         if (args.Error != null)
                         {
                             MessageBox.Show(args.Error.Message);
                         }
                         if (args.Cancelled == true) return;
                          //LINQ语句的表达法等效与下面的lamda 表达式
                         //_education_info = (from ei in args.Result select new EducationInfo(ei)).ToList();
                        
                         //lamda 表达式
                         _education_info = args.Result.Select(ei => new EducationInfo(ei)).ToList();               
                         GVList.ItemsSource = _education_info;
                     }
                );

            }

  • 相关阅读:
    【bzoj3782】上学路线 dp+容斥原理+Lucas定理+中国剩余定理
    【bzoj3210】花神的浇花集会 旋转坐标系
    【bzoj3513】[MUTC2013]idiots FFT
    【bzoj1043】[HAOI2008]下落的圆盘 计算几何
    【bzoj2521】[Shoi2010]最小生成树 网络流最小割
    【bzoj4811】[Ynoi2017]由乃的OJ 树链剖分+线段树区间合并
    【bzoj2467】[中山市选2010]生成树 矩阵树定理
    【bzoj1002】[FJOI2007]轮状病毒 矩阵树定理+高精度
    【bzoj4031】[HEOI2015]小Z的房间 矩阵树定理
    【bzoj4292】[PA2015]Równanie 暴力
  • 原文地址:https://www.cnblogs.com/muer/p/MVVM_VIEWMODEL.html
Copyright © 2020-2023  润新知