public class RelayCommand : ICommand
{
private bool _isenabled;
private Action _handler = null;
public RelayCommand(Action handler)
{
_handler = handler;
}
/// <summary>
///
/// </summary>
public bool IsEnabled
{
get { return _isenabled; }
set
{
_isenabled = value;
if (CanExecuteChanged != null)
{
this.CanExecuteChanged(this, EventArgs.Empty);
}
}
}
/// <summary>
/// 是否启用
/// </summary>
/// <param name="parameter"></param>
/// <returns></returns>
public bool CanExecute(object parameter)
{
//throw new NotImplementedException();
return IsEnabled;
}
public event EventHandler CanExecuteChanged;
/// <summary>
/// 执行
/// </summary>
/// <param name="parameter"></param>
public void Execute(object parameter)
{
//throw new NotImplementedException();
_handler();
}
}
定义好此类之后则可以开始做增删改查操作。
六、ViewModel
一、首先是baseViewModel
public class BaseViewModel
{
/// <summary>
/// 服务
/// </summary>
protected static ServiceReference1.Service1Client _service = null;
/// <summary>
/// 用户姓名
/// </summary>
protected static string UserName = null;
/// <summary>
/// 用户ID
/// </summary>
protected static int UserID = 0;
/// <summary>
/// 级别ID
/// </summary>
protected static int LevelID = 0;
/// <summary>
/// 操作的窗体
/// </summary>
protected Window windows = null;
/// <summary>
///
/// </summary>
public BaseViewModel()
{
if (_service == null)
{
_service = new ServiceReference1.Service1Client();//这个是我调用wcf的方法。
}
}
二、CompanyViewModel
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections.ObjectModel;
using Model;
using System.ComponentModel;
using System.Windows.Input;
using System.Windows;
public class CompanyInfoViewModel : BaseViewModel, INotifyPropertyChanged
{
private ObservableCollection<CompanyInfoModel> _companyInfoList;
public ObservableCollection<CompanyInfoModel> CompanyInfoList
{
get
{
return _companyInfoList;
}
set
{
if (_companyInfoList != value)
{
_companyInfoList = value;
OnPropertyChanged("CompanyInfoList");
}
}
}
public CompanyInfoViewModel()
{
//构造函数中初始化家庭成员列表
CompanyInfoModel model = new CompanyInfoModel();
List<CompanyInfoModel> list = _service.GetCompanyInfoByPage(0, model).ToList();
_companyInfoList = new ObservableCollection<CompanyInfoModel>(list);
_addCompanyCommand = new RelayCommand(addCompanyCommand) { IsEnabled = true };
_searchCompanyCommand = new RelayCommand(searchCompanyCommand) { IsEnabled = true };
_delCompanyCommand = new RelayCommand(delCompanyCommand) { IsEnabled = true };
_updCompanyCommand = new RelayCommand(updCompanyCommand) { IsEnabled = true };
}
#region 绑定的事件
private ICommand _addCompanyCommand;
public ICommand AddCompanyCommand
{
get { return _addCompanyCommand; }
}
private ICommand _searchCompanyCommand;
public ICommand SearchCompanyCommand
{
get { return _searchCompanyCommand; }
}
private ICommand _delCompanyCommand;
public ICommand DelCompanyCommand
{
get { return _delCompanyCommand; }
}
private ICommand _updCompanyCommand;
public ICommand UpdCompanyCommand
{
get { return _updCompanyCommand; }
}
private CompanyInfoModel _companyModel =
恩,网上找了一片代码,让我恶心的是没有都只有最简单的查询和搜索功能,最重要的新增和更新功能却没有,让我非常蛋疼,所以今天我特意写一个MVVM模式下的完整版给大家看一下。。。 恩,先不贴代码,先看有没有人留言需要这个增删改查的代码,如果有人需要的话我在贴上来。
MVVM
即Model-View-ViewModel,通常适用于
WPF
或Silverlight开发。
MVC或MVP都是基于面向对象的设计
模式
,而
MVVM
是基于组件,数据驱动的设计
模式
。正是这一区别,造成大家对于
MVVM
学习起来比较费力。
我们可以通过下图来直观的理解
MVVM
设计
模式
:
View:使用XAML呈现给用户的界面,负责与用户交互,接收用户输入,把数据展现...
wpf
的精华就是
mvvm
,viewmodel与view以及db.cs数据库操作类的关系,使得mianwondow几乎不用写什么代码,逻辑都放在viewmodel里,db里存放一些基础数据操作方法。内附源码链接。
先展示一下界面:
新增以及修
改
界面
需要一个对datagrid控件进行的操作,不需要别的界面,自己动手做了一个。
本例子是
wpf
中datagrid的增加修
改
,对于datagrid中的canuseraddrows=true,对当前空白行进行的添加数据,修
改
时,鼠标离开焦点可自动更新数据库,删除等等。不需要多余的界面进行添加修
改
等,利用datagrid的属性,事件等进行的直接操作。
注意:本例子是连接的odbc数据库,利用的时候可
改
变一下连接字符串,连接自己想要的数据库,方可运行。
**前言:**CURD无论是B/S、还是C/S开发,这个是新手编程遇到的第一个门槛,也是后续编程过程中,一直使用的技能。我当初第一份实习的题目只有一个,那就是基于现有框架,写一个
增删
改
查
的demo。
废话不多说,我们来写第一个实例(新手用户,完全不懂
WPF
,不知道
MVVM
等知识);
1、先创建一个
wpf
项目,把默认的Gird布局修
改
为StackPanel布局(datagrid布局写的代码太多了,有...
WPF
(Windows Presentation Foundation)是一个用于创建 Windows 应用程序的开发框架。
MVVM
(Model-View-ViewModel)是一种设计
模式
,用于将应用程序的业务逻辑与用户界面进行分离。
在
WPF
中,可以使用
MVVM
模式
来实现
增删
改
查
功能。以下是实现
增删
改
查
的基本步骤:
1. Model(模型):模型层表示应用程序的数据源,例如从数据库或其他数据存储中检索和保存数据。可以创建一个类来定义模型,其中包含要操作的属性和方法。
2. View(视图):视图层表示用户界面,用于显示和接收用户操作。可以在XAML文件中创建视图,其中包含用户界面元素,例如按钮、文本框和数据表格。
3. ViewModel(视图模型):视图模型是模型和视图之间的中间层,用于处理业务逻辑。可以创建一个类来定义视图模型,其中包含与用户界面交互的命令和属性。视图模型还可以包含对模型的引用,用于执行
增删
改
查
操作。
4. 数据绑定:使用数据绑定将视图和视图模型连接起来。可以将视图模型的属性绑定到视图的控件,以便在用户界面上显示数据。还可以将视图模型的命令绑定到视图的按钮,以便在用户界面上触发操作。
5. 实现
增删
改
查
功能:在视图模型中编写逻辑代码,以实现
增删
改
查
功能。通过调用模型的方法,可以在数据库中执行相应的操作。然后,更新视图模型中的属性,以便在用户界面上反映出变化的数据。
通过以上步骤,就可以在
WPF
中实现
增删
改
查
功能。
MVVM
模式
的好处是可以将应用程序的不同功能进行清晰的分离,提高代码的可维护性和可测试性。