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

    }
}

 

posted @ 2018-09-30 19:12  <--青青子衿-->  阅读(868)  评论(0)    收藏  举报
// /**/ // 在页脚Html代码 引入 // function btn_donateClick() { var DivPopup = document.getElementById('Div_popup'); var DivMasklayer = document.getElementById('div_masklayer'); DivMasklayer.style.display = 'block'; DivPopup.style.display = 'block'; var h = Div_popup.clientHeight; with (Div_popup.style) { marginTop = -h / 2 + 'px'; } } function MasklayerClick() { var masklayer = document.getElementById('div_masklayer'); var divImg = document.getElementById("Div_popup"); masklayer.style.display = "none"; divImg.style.display = "none"; } setTimeout( function () { document.getElementById('div_masklayer').onclick = MasklayerClick; document.getElementById('btn_donate').onclick = btn_donateClick; var a_gzw = document.getElementById("guanzhuwo"); a_gzw.href = "javascript:void(0);"; $("#guanzhuwo").attr("onclick","follow('33513f9f-ba13-e011-ac81-842b2b196315');"); }, 900);