什么是MVVM架构和数据绑定?
作者:jimmychoong_959 | 来源:互联网 | 2021-11-16 01:15
(申明:最近在做一个练习,写点东西,谨供参考。)1、界面展示:其中的布局和样式就不说了,重点在MVVM架构和数据绑定(Model层使用EF(EntityFramework)实体框架,不做介绍)。 绑定后:2、架构介绍:在Views层中新建CusGroupEditWindow窗体,ViewModels中建立CusGroupEditViewModel类,在窗体的x
(申明:最近在做一个练习,写点东西,谨供参考。)
1、界面展示:其中的布局和样式就不说了,重点在MVVM架构和数据绑定(Model层使用EF(Entity Framework)实体框架,不做介绍)。
2、架构介绍:
在Views层中新建CusGroupEditWindow窗体,ViewModels中建立CusGroupEditViewModel类,在窗体的xaml或者cs中引用ViewModels对应类:
xaml中:
cs:DataCOntext= CusGroupEditViewModel。(添加引用路径)
/***********************************************/
*CsGroup是在ViewModel中定义的一个CusGroup对象, *
*CusGroup对象是在SQL数据库中的表,在EF中的对象。 *
/***********************************************/
3、TextBox绑定:
7、DataGrid绑定:
/***************************************************************/
//DataGrid当前选择对象private CusGroup currentSelectItem;public CusGroup CurrentSelectItem
{get { return currentSelectItem; }set{
currentSelectItem = value;
GetCutCmbSelect(value);
}
}
View Code
/***************************************************************/
ViewModel 中的代码:
using HeYin.ERP.DataModels;using HeYin.ERP.IServices;using HeYin.ERP.Models;using HeYin.ERP.Services;using Microsoft.Practices.Prism.Commands;using System;using System.Collections.Generic;using System.Collections.ObjectModel;using System.Windows;using System.Text.RegularExpressions;using System.Windows.Controls;namespace HeYin.ERP.Client.ViewModels.Customer
{class CusGroupEditViewModel : BaseViewModel
{private bool bIsAdd = false;
ICusGroupService CGS; //调用IService接口#region Properties 属性private Guid gCsGroupID = Guid.Empty;//All CusGroupprivate List csGroupsAll;public List CsGroupsAll
{get { return csGroupsAll; }set{
csGroupsAll = value; //设定值OnPropertyChanged("CsGroupsAll"); //在属性更改后,通知 }
}private List csGroupsMinPrestore;public List CsGroupsAllMinPrestore
{get { return csGroupsMinPrestore; }set{
csGroupsMinPrestore = value; //设定值OnPropertyChanged("CsGroupsAllMinPrestore"); //在属性更改后,通知 }
}//CusGroup对象private CusGroup csGroup;public CusGroup CsGroup
{get { return csGroup; }set{ csGroup = value;
OnPropertyChanged("CsGroup"); }
}/// /// /// private string strCMBselectValue;public string StrCMBselectValue
{get { return strCMBselectValue; }set{if (value != null)
{
strCMBselectValue = value;
OnPropertyChanged("StrCMBselectValue");
}
}
}/// /// ComboBoxDataModel:作为一个ComboBox的对象,可以理解为数据源/// private ObservableCollection lstCSGDownLevelID;public ObservableCollection LstCSGDownLevelID
{get { return lstCSGDownLevelID; }set{
lstCSGDownLevelID = value;
OnPropertyChanged("LstCSGDownLevelID");
}
}//DataGrid当前选择对象private CusGroup currentSelectItem;public CusGroup CurrentSelectItem
{get { return currentSelectItem; }set{
currentSelectItem = value;
GetCutCmbSelect(value);
}
}private int errorCount;public int ErrorCount { get => errorCount; set => errorCount = value; }#endregion#region Commandspublic DelegateCommand BtnChangedCommand { get; set; }public DelegateCommand TxtChangedCommand { get; set; } #endregionpublic CusGroupEditViewModel()
{
CGS = new CusGroupService();
CsGroupsAll = new List();
csGroup = new CusGroup();
LstCSGDownLevelID = new ObservableCollection();
BtnChangedCommand = new DelegateCommand(MenuClick);
TxtChangedCommand = new DelegateCommand(ChangeCMBValue);
GetAllCusGroups();
}#region ButtonClickprivate void MenuClick(string strMessage)
{if (string.IsNullOrEmpty(strMessage)) return;if (CsGroup == null) return;switch (strMessage)
{case "btnCusGroupSave":
Save();break;case "btnCusGroupAdd":
Add();break;case "btnCusGroupDelete":
Delete();break;
}
}#endregion ButtonClick#region motheds/// /// 获取全部Group/// private void GetAllCusGroups()
{//获取满足条件的客户分组信息 CsGroupsAll.Clear();
CsGroupsAll = CGS.Get(s => s.IsDelete == 0);
GetAllCMBItems();//给降档分组下拉框赋值if ((gCsGroupID == null || gCsGroupID == Guid.Empty) && CsGroupsAll.Count > 0)
CsGroup = CsGroupsAll[0]; //给基础信息等赋值StrCMBselectValue = CsGroup.DownLevelID.ToString();//设置降档分组默认值 }/// /// 添加/// /// private void AddCusGroup(CusGroup cg)
{
cg.ID = Guid.NewGuid(); //新建分组GUIDcg.IsDelete = 0; //默认为0:不删除cg.CreateBy = App.GetCurrentUserId();//创建人员关联员工 GUIDcg.CreateTime = DateTime.Now; //初始化创建时间,应该使用服务器当前时间bool c = CGS.Add(cg);if (c)
{
MessageBox.Show(string.Format("创建新组别【{0}】成功!", CsGroup.Name), "提示", MessageBoxButton.OK, MessageBoxImage.Information);
GetAllCusGroups();
bIsAdd = false;
}
}/// /// 修改/// /// private void UpdateCusGroup(CusGroup cg)
{
bIsAdd = false;
cg.UpdateTime = DateTime.Now;
cg.UpdateBy = App.GetCurrentUserId();//更新人员关联员工 GUIDstring[] str = { "UpdateTime", "UpdateBy" };bool b = CGS.Edit(cg, str);if (b)
{
MessageBox.Show("更改组别【成功】!", "提示", MessageBoxButton.OK, MessageBoxImage.Information);
GetAllCusGroups();
}
}/// ///删除方法(实为更新)/// /// private void DeleteCusGroup(CusGroup cg)
{
cg.IsDelete = 1; //更改数据库删除标志cg.UpdateTime = DateTime.Now; //更新删除时间cg.UpdateBy = App.GetCurrentUserId();//更新人员关联员工 GUIDstring[] str = { "UpdateTime", "IsDelete", "UpdateBy" };bool b = CGS.Edit(cg, str);if (b)
{//MessageBox.Show(string.Format("已删除组别【{0}】!", CsGroup.Name), "提示", MessageBoxButton.OK, MessageBoxImage.Information); GetAllCusGroups();
CsGroup = new CusGroup(); //清空对象bIsAdd = true;
}
}/// /// 插入和更新方法调用/// private void Save()
{if (ErrorCount > 0)
{//判断必填数据是否为空:为空则提示MessageBox.Show("请核对所填数据", "提示", MessageBoxButton.YesNo, MessageBoxImage.Information);return;
}if (bIsAdd)
AddCusGroup(CsGroup);elseUpdateCusGroup(CsGroup);
}/// /// 获取降档分组下拉列表的值,并指定默认值/// /// private void GetCutCmbSelect(CusGroup value)
{
bIsAdd = false;//点击新增后,再选择列表的逻辑if (value != null)
{
CsGroup = CGS.GetById(value.ID);//查找出当前选中的对象gCsGroupID = CsGroup.ID; //保存当前选择对象的GUIDif (CsGroup != null)
{if (CsGroup.DownLevelID.HasValue)
{//如果降档ID有值,则默认显示,如果没有,则显示为空GetExceptCMBSelect();//刷新下拉列表,先刷新,再赋值给默认值StrCMBselectValue = CsGroup.DownLevelID.ToString();
}else{
LstCSGDownLevelID.Clear();
StrCMBselectValue = string.Empty;
}
}
}
}private void Add()
{
bIsAdd = true;//点击新建分组时,重新获取所有降档ID对应的中文名 GetAllCMBItems();
CsGroup = new CusGroup();
}private void Delete()
{if (this.CsGroup.ID == Guid.Empty || CsGroup.ID == null)
MessageBox.Show("请选择要删除组别", "提示", MessageBoxButton.OK, MessageBoxImage.Information);else{
MessageBoxResult msgResult = MessageBox.Show(string.Format("确定要删除分组【{0}】吗?", CsGroup.Name), "提示", MessageBoxButton.YesNo, MessageBoxImage.Information);if (msgResult == MessageBoxResult.Yes)
DeleteCusGroup(CsGroup);
}
}/// /// 排除当前列的降档ID和对应的Name/// private void GetExceptCMBSelect()
{
LstCSGDownLevelID.Clear();
CsGroupsAllMinPrestore = CGS.Get(s => s.IsDelete == 0 && s.MinPrestore <= CsGroup.MinPrestore);foreach (var iDlID in CsGroupsAllMinPrestore)
{if (iDlID.ID != CsGroup.ID) //去除当前选择ID对应的NameLstCSGDownLevelID.Add(new ComboBoxDataModel() { Value = iDlID.ID.ToString(), Text = iDlID.Name });
}
}/// /// 获取列表中所有降档ID和对应的Name/// private void GetAllCMBItems()
{
LstCSGDownLevelID.Clear();foreach (var iDlID in CsGroupsAll)
{
LstCSGDownLevelID.Add(new ComboBoxDataModel() { Value = iDlID.ID.ToString(), Text = iDlID.Name });
}
}private void ChangeCMBValue(CusGroup cgMinPrestore)
{
LstCSGDownLevelID.Clear();
List lstTextChange = new List();
lstTextChange = CGS.Get(s => s.MinPrestore
View中代码:
以上就是什么是MVVM架构和数据绑定?的详细内容,更多请关注其它相关文章!