WPF MVVM 之将 ViewModel层中界面所需Model再分一层到单独的 UI.Model中
1.UI.Model
/*---------------------------------------------------------------- * 作 者 :姜 彦 * 项目名称 :Utility.Tool.UI.Model.AE240_Simulator * 类 名 称 :MainWindowModel * 命名空间 :Utility.Tool.UI.Model.AE240_Simulator * CLR 版本 :4.0.30319.42000 * 创建时间 :2018/8/20 11:42:03 * 当前版本 :1.0.0.1 * * 描述说明: * * 修改历史: * ******************************************************************* * Copyright @ JiangYan 2018. All rights reserved. ******************************************************************* ------------------------------------------------------------------*/ using System; using System.Collections.Generic; using System.ComponentModel; using System.IO.Ports; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Collections.ObjectModel; using Utility.Tool.Model.Model; using Utility.Tool.Language; using Utility.Tool.Controller.Controller.AE240Tester.Strategy; namespace Utility.Tool.UI.Model.AE240_Simulator { /// <summary> /// MainWindowModel /// </summary> public class MainWindowModel : INotifyPropertyChanged { public MainWindowModel() { BaudRates = new List<string>(); BaudRates.Add("110"); BaudRates.Add("300"); BaudRates.Add("600"); BaudRates.Add("1200"); BaudRates.Add("2400"); BaudRates.Add("4800"); BaudRates.Add("9600"); BaudRates.Add("14400"); BaudRates.Add("19200"); BaudRates.Add("38400"); BaudRates.Add("56000"); BaudRates.Add("57600"); BaudRates.Add("115200"); DataBits = new List<string>(); DataBits.Add("5"); DataBits.Add("6"); DataBits.Add("7"); DataBits.Add("8"); StopBits = new List<string>(); StopBits.Add("1"); StopBits.Add("1.5"); StopBits.Add("2"); Paritys = new List<string>(); Paritys.Add("NONE"); Paritys.Add("ODD"); Paritys.Add("EVEN"); Paritys.Add("MARK"); Paritys.Add("SPACE"); BaseStreams = new List<string>(); BaseStreams.Add("NONE"); _SoftVersion = GetVersion(); } #region Implements public event PropertyChangedEventHandler PropertyChanged; protected virtual void OnPropertyChanged(string propertyName) { if (PropertyChanged != null) { PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); } } #endregion #region 串口下拉信息 /// <summary> /// 串口列表 /// </summary> public List<string> COMS { get; set; } /// <summary> /// 波特率列表 /// </summary> public List<string> BaudRates { get; set; } public List<string> StopBits { get; set; } /// <summary> /// 数据位列表 /// </summary> public List<string> DataBits { get; set; } /// <summary> /// 校验位列表 /// </summary> public List<string> Paritys { get; set; } /// <summary> /// 流控制列表 /// </summary> public List<string> BaseStreams { get; set; } #endregion #region Binding Property of Controls private string _PortName; /// <summary> /// 串口号 /// </summary> public string PortName { get { return _PortName; } set { _PortName = value; PropertyChanged.Invoke(this, new PropertyChangedEventArgs("PortName")); } } private int _BaudRate; /// <summary> /// 波特率 /// </summary> public int BaudRate { get { return _BaudRate; } set { _BaudRate = value; PropertyChanged.Invoke(this, new PropertyChangedEventArgs("BaudRate")); } } private Parity _Parity; /// <summary> /// 校验位 /// </summary> public Parity Parity { get { return _Parity; } set { _Parity = value; PropertyChanged.Invoke(this, new PropertyChangedEventArgs("Parity")); } } private int _DataBit; /// <summary> /// 数据位 /// </summary> public int DataBit { get { return _DataBit; } set { _DataBit = value; PropertyChanged.Invoke(this, new PropertyChangedEventArgs("DataBit")); } } private StopBits _StopBit; /// <summary> /// 停止位 /// </summary> public StopBits StopBit { get { return _StopBit; } set { _StopBit = value; PropertyChanged.Invoke(this, new PropertyChangedEventArgs("StopBit")); } } private Stream _BaseStream; /// <summary> /// 流控制 /// </summary> public Stream BaseStream { get { return _BaseStream; } set { _BaseStream = value; PropertyChanged.Invoke(this, new PropertyChangedEventArgs("BaseStream")); } } private string _SendFrame; /// <summary> /// 发送帧 /// </summary> public string SendFrame { get { return _SendFrame; } set { _SendFrame = value; PropertyChanged.Invoke(this, new PropertyChangedEventArgs("SendFrame")); } } private bool? _IsRecvCount = true; /// <summary> /// 是否开启计数 /// </summary> public bool? IsRecvCount { get { return _IsRecvCount; } set { _IsRecvCount = value; PropertyChanged.Invoke(this, new PropertyChangedEventArgs("IsRecvCount")); } } private string _RecvCount = "计数:"; /// <summary> /// 接收帧计数 /// </summary> public string RecvCount { get { return _RecvCount; } set { _RecvCount = value; PropertyChanged.Invoke(this, new PropertyChangedEventArgs("RecvCount")); } } private bool _IsRecvHex = true; /// <summary> /// 是否是十六进制接收模式 /// </summary> public bool IsRecvHex { get { return _IsRecvHex; } set { _IsRecvHex = value; PropertyChanged.Invoke(this, new PropertyChangedEventArgs("IsRecvHex")); } } private bool _IsSendHex = true; /// <summary> /// 是否是十六进制发送模式 /// </summary> public bool IsSendHex { get { return _IsSendHex; } set { _IsSendHex = value; PropertyChanged.Invoke(this, new PropertyChangedEventArgs("IsSendHex")); } } private bool _IsReply = true; /// <summary> /// 是否主动回复 /// </summary> public bool IsReply { get { return _IsReply; } set { _IsReply = value; PropertyChanged.Invoke(this, new PropertyChangedEventArgs("IsReply")); } } private bool _IsControl = true; /// <summary> /// 是否打开控制面板 /// </summary> public bool IsControl { get { return _IsControl; } set { _IsControl = value; PropertyChanged.Invoke(this, new PropertyChangedEventArgs("IsControl")); } } private bool _IsOpenPort = true; /// <summary> /// 是否打开了串口 /// </summary> public bool IsOpenPort { get { return _IsOpenPort; } set { _IsOpenPort = value; PropertyChanged.Invoke(this, new PropertyChangedEventArgs("IsOpenPort")); } } public string _SoftVersion = "AE240下位机模拟器 "; /// <summary> /// 软件版本号 /// </summary> public string SoftVersion { get { return _SoftVersion; } set { _SoftVersion = value; PropertyChanged.Invoke(this, new PropertyChangedEventArgs("SoftVersion")); } } private ObservableCollection<FrameContent> _Frameslists = new ObservableCollection<FrameContent>(); /// <summary> /// DataGrid表格绑定对象集合 /// </summary> public ObservableCollection<FrameContent> FrameContents { get { return _Frameslists; } set { _Frameslists = value; PropertyChanged.Invoke(this, new PropertyChangedEventArgs("FrameContents")); } } private bool _IsEncode = true; /// <summary> /// 是否编码 /// </summary> public bool IsEncode { get { FrameModel.IsEncode = _IsEncode; return _IsEncode; } set { _IsEncode = value; FrameModel.IsEncode = value; PropertyChanged.Invoke(this, new PropertyChangedEventArgs("IsEncode")); } } private bool _IsCN = true; /// <summary> /// 是否中文 /// </summary> public bool IsCN { get { return _IsCN; } set { _IsCN = value; ChangeLanguage(); PropertyChanged.Invoke(this, new PropertyChangedEventArgs("IsCN")); } } private string _TotalCycleNo = "全部周期号:"; /// <summary> /// 全部周期号 /// </summary> public string TotalCycleNo { get { return _TotalCycleNo; } set { _TotalCycleNo = value; PropertyChanged.Invoke(this, new PropertyChangedEventArgs("TotalCycleNo")); } } private bool _IsScanBarcode = false; /// <summary> /// 是否中文 /// </summary> public bool IsScanBarcode { get { return _IsScanBarcode; } set { _IsScanBarcode = value; SendRackBarcodeReportStrategy.IsScanBarcode = value; PropertyChanged.Invoke(this, new PropertyChangedEventArgs("IsScanBarcode")); } } #endregion #region Fuctions /// <summary> /// 切换语言 /// </summary> void ChangeLanguage() { SoftVersion = GetVersion(); LanguageType langType = new LanguageType(); if (_IsCN) { langType = LanguageType.Chinese; } else { langType = LanguageType.English; } LoadLanguage.ChangeLanguage(langType); } /// 获取当前系统的版本号 /// </summary> /// <returns></returns> private string GetVersion() { string version = string.Empty; if (_IsCN) { version = "AE240下位机模拟器 " + System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString(); } else { version = "AE240Simulator " + System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString(); } return version; } #endregion } }
浙公网安备 33010602011771号