接下来写ViewModels

创建运单的ViewModel类

    public class CreateExpressWindowViewModel: NotificationObject
{
private string province; public string Province
{
get
{
return province;
}
set
{
province = value;
this.RaisePropertyChanged("Province");
}
} private string city; public string City
{
get
{
return city;
}
set
{
city = value;
this.RaisePropertyChanged("City");
}
} private string area; public string Area
{
get
{
return area;
}
set
{
area = value;
this.RaisePropertyChanged("Area");
}
} private string street; public string Street
{
get
{
return street;
}
set
{
street = value;
this.RaisePropertyChanged("Street");
}
} private string username; public string Username
{
get
{
return username;
}
set
{
username = value;
this.RaisePropertyChanged("Username");
}
} private string phonenumber; public string Phonenumber
{
get
{
return phonenumber;
}
set
{
phonenumber = value;
this.RaisePropertyChanged("Phonenumber");
}
} private string createtime; public string Createtime
{
get
{
return createtime;
}
set
{
createtime = value;
this.RaisePropertyChanged("Createtime");
}
} public DelegateCommand CreateExpressCommand { get; set; } public CreateExpressWindowViewModel()
{
Createtime = DateTime.Now.ToShortDateString();
CreateExpressCommand = new DelegateCommand(new Action(InsertExpress));
} private void InsertExpress()
{
//Random rd = new Random();
//int num = rd.Next(10000000, 99999999); InsertExpressService insertExpressService = new InsertExpressService();
Express express = new Express();
insertExpressService.InsertExpress(Province,City,Area,Street,Username,Phonenumber,Createtime);
MessageBox.Show("成功下单!");
ExpressWindow expressWindow = new ExpressWindow(); ReadExpressWindow readExpressWindow = new ReadExpressWindow();
readExpressWindow.Show();
expressWindow.Close();
}
}

public class GetExpressWindow : NotificationObject
{
private string province; public string Province
{
get
{
return province;
}
set
{
province = value;
this.RaisePropertyChanged("Province");
}
} private string city; public string City
{
get
{
return city;
}
set
{
city = value;
this.RaisePropertyChanged("City");
}
} private string area; public string Area
{
get
{
return area;
}
set
{
area = value;
this.RaisePropertyChanged("Area");
}
} private string street; public string Street
{
get
{
return street;
}
set
{
street = value;
this.RaisePropertyChanged("Street");
}
} private string username; public string Username
{
get
{
return username;
}
set
{
username = value;
this.RaisePropertyChanged("Username");
}
} private string phonenumber; public string Phonenumber
{
get
{
return phonenumber;
}
set
{
phonenumber = value;
this.RaisePropertyChanged("Phonenumber");
}
} private string createtime; public string Createtime
{
get
{
return createtime;
}
set
{
createtime = value;
this.RaisePropertyChanged("Createtime");
}
}
public DelegateCommand GetExpressCommand { get; set; }
public GetExpressWindow()
{
GetExpressCommand = new DelegateCommand(new Action(GetExpress));
} private void GetExpress()
{
GetExpressService getExpressService = new GetExpressService();
Express express = new Express();
express = getExpressService.GetExpressData();
Province = express.Province;
City = express.City;
Area = express.Area;
Street = express.Street;
Username = express.UserName;
Phonenumber = express.PhoneNumber;
Createtime = express.CteateTime;
}
}

    public class RegisteredWindowViewModel : NotificationObject
{ private string userAccount; public string UserAccount
{
get
{
return userAccount;
}
set
{
userAccount = value;
this.RaisePropertyChanged("UserAccount");
}
} private string password; public string Password
{
get
{
return password;
}
set
{
password = value;
this.RaisePropertyChanged("Password");
}
} public DelegateCommand InsertCommand { get; set; }
public RegisteredWindowViewModel()
{
InsertCommand = new DelegateCommand(new Action(InsertUserData));
} private void InsertUserData()
{
InsertRegisteredService insertRegisteredService = new InsertRegisteredService();
User user = new User();
user.UserAccount = UserAccount;
user.Password = Password;
user = insertRegisteredService.InsertUser(UserAccount, Password);
MessageBox.Show("注册成功!");
}
}

   public class UserViewModel: NotificationObject
{
/// <summary>
/// 判断登录用户是否存在
/// </summary>
private bool exist; public bool Exist
{
get
{
return exist;
}
set
{
exist = value;
this.RaisePropertyChanged("Exist");
}
} }

    public class UserWindowViewModel : NotificationObject
{ //var logger = NLog.LogManager.GetCurrentClassLogger();
//logger.Info("Hello World"); //var a = LogManager.GetCurrentClassLogger();
private string username; public string Username
{
get
{
return username;
}
set
{
username = value;
this.RaisePropertyChanged("Username");
}
} private string userpassword; public string Userpassword
{
get
{
return userpassword;
}
set
{
userpassword = value;
this.RaisePropertyChanged("Userpassword");
}
} public DelegateCommand GetCommand { get; set; } public UserWindowViewModel()
{
GetCommand = new DelegateCommand(new Action(GetUser));
}
private void GetUser()
{
GetUserService getUserServicelist = new GetUserService();
List<User> userslist = getUserServicelist.GetAllUser(); List<User> usernamecount = userslist.Where(x=>x.UserAccount==Username).ToList();
List<User> passwordcount = userslist.Where(x=>x.Password==Userpassword).ToList(); ///方法二
for (int i = ; i < usernamecount.Count; i++)
{
if (usernamecount[i].UserAccount==Username&&usernamecount[i].Password==Userpassword)
{
MessageBox.Show("登录成功!");
ExpressWindow expressWindow = new ExpressWindow();
expressWindow.ShowDialog();
return;
}
else
{
MessageBox.Show("账号不存在或密码错误!");
return;
}
} ///方法一
//if (usernamecount.Count > 0 && passwordcount.Count > 0)
//{
// MessageBox.Show("登录成功!");
// return;
//}
//else
//{
// MessageBox.Show("登录失败!");
// return;
//} }
}

以上分别为创建运单,查看运单,以及注册,以及登录的ViewModels,作为Views和Models之间的连接器

简单的物流项目实战,WPF的MVVM设计模式(四)的更多相关文章

  1. 简单的物流项目实战,WPF的MVVM设计模式(一)

    新建一个WPF项目,命名为WMS 然后分别新建文件夹,Data,Models,Views,ViewModels,Services,如下图所示 然后通过NuGet安装连个Nuget包,分别为SQLite ...

  2. 简单的物流项目实战,WPF的MVVM设计模式(五)

    开始界面 <Grid> <Grid.RowDefinitions> <RowDefinition/> <RowDefinition/> <RowD ...

  3. 简单的物流项目实战,WPF的MVVM设计模式(三)

    往Services文件里面添加接口以及实现接口 IUserService接口 List<User> GetAllUser(); GetUserService类 ConnectToDatab ...

  4. 简单的物流项目实战,WPF的MVVM设计模式(二)

    往Models文件添加一个类,ConnectObject         /// <summary>        /// 链接数据库字符串        /// </summary ...

  5. 使用MVVM设计模式构建WPF应用程序

    使用MVVM设计模式构建WPF应用程序 本文是翻译大牛Josh Smith的文章,WPF Apps With The Model-View-ViewModel Design Pattern,译者水平有 ...

  6. WPF系列教程——(二)使用Prism实现MVVM设计模式 - 简书

    原文:WPF系列教程--(二)使用Prism实现MVVM设计模式 - 简书 本文假设你已经知道MVVM设计模式是什么,所以直接进入正题,今天我们就用Prism来实现WPF的MVVM设计模式,百度上关于 ...

  7. CleanAOP实战系列--WPF中MVVM自动更新

    CleanAOP实战系列--WPF中MVVM自动更新 作者: 立地 邮箱: jarvin_g@126.com QQ: 511363759 CleanAOP介绍:https://github.com/J ...

  8. 从0到1:使用Caliburn.Micro(WPF和MVVM)开发简单的计算器

    从0到1:使用Caliburn.Micro(WPF和MVVM)开发简单的计算器 之前时间一直在使用Caliburn.Micro这种应用了MVVM模式的WPF框架做开发,是时候总结一下了. Calibu ...

  9. 企业项目实战 .Net Core + Vue/Angular 分库分表日志系统 | 简单的分库分表设计

    前言 项目涉及到了一些设计模式,如果你看的不是很明白,没有关系坚持下来,写完之后去思考去品,你就会有一种突拨开云雾的感觉,所以请不要在半途感觉自己看不懂选择放弃,如果我哪里写的详细,或者需要修正请联系 ...

随机推荐

  1. sh_02_第一个while循环

    sh_02_第一个while循环 # 打印 5 遍 Hello Python # 1. 定义一个整数变量,记录循环次数 i = 1 # 2. 开始循环 while i <= 3: # 1> ...

  2. BZOJ 3168 Luogu P4100 [HEOI2013]钙铁锌硒维生素 (矩阵求逆、二分图匹配)

    线性代数+图论好题. 题目链接: (bzoj) https://www.lydsy.com/JudgeOnline/problem.php?id=3168 (luogu) https://www.lu ...

  3. [51nod1383&1048]整数分解为2的幂:DP

    算法一 分析 \(f[x]=f[x-1]+f[x/2] \times [x \equiv 0 \mod 2],O(n)\) 代码 n=int(input()) f=[0]*(n+5) f[0]=1 m ...

  4. 采用.bat批处理命令快速设置Java环境变量

    背景: java课程培训,每次到机房需要重新安装JDK,每次都采用图形界面进行操作比较麻烦(慢),于是在网上查了一下CMD命令设置系统环境变量的方法,再次记录下来. 设置方法: 1.找到JDK安装路径 ...

  5. java跨越请求实例

    使用Access-Control-Allow-Origin解决跨域 什么是跨域 当两个域具有相同的协议(如http), 相同的端口(如80),相同的host(如www.google.com),那么我们 ...

  6. 启动Maven项目时报错Failed to execute goal org.apache.maven.plugins:maven-clean-plugin:2.5:clean (default-clean) on project **-web: Failed to clean project: Failed to delete E:\**\target\tomcat\logs\access_lo

    这类错误 出现这种错误,通常是由于您已启动了另一个tomcat 进程或者运行的javaw.exe进程,导致报错. 解决方法: 1. 鼠标点击 X 进行关闭运行失败的 Console页,(如果运行多次, ...

  7. awk命令1

    [root@a ~]# awk 'END{print NR}' c.txt       #没错,这就是文件的行数,当然,这种统计方法不是linux下最快的,但也是一种思路3[root@a ~]# wc ...

  8. day68—angularJS学习笔记之-过滤器

    转行学开发,代码100天——2018-05-23 今天学习angularJS的过滤器的使用. angular中的常用过滤器用来修改数据格式,主要有以下几类: 1.大写,| uppercase 2.小写 ...

  9. spotlight监控mysql性能

    spotlight可以监控mysql性能,同监控linux一样配置 目录 1.安装spotlight 2.参数认识 1.安装spotlight spotlight不仅仅只是监控mysql,还可以完成数 ...

  10. IntlliJ IDEA 注册码获取或离线破解

    JB 的软件还是挺好用的,建议有钱的话支持正版.. IntelliJ IDEA 有开源版,但是要想玩企业级开发,还是得用收费版. 不管哪种方式,使用前都需要把"0.0.0.0 account ...