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;
}
);
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?