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 模式 的好处是可以将应用程序的不同功能进行清晰的分离,提高代码的可维护性和可测试性。