VirtualKeyboard.xaml.cs 4.26 KB
using System;
using System.Windows;
using System.Windows.Controls;
using OS.Spin.ViewModle.Models;
using System.Text.RegularExpressions;
using OS.Spin.Common;

namespace OS.Spin.View.Views
{
    /// <summary>
    /// VirtualKeyboard.xaml 的交互逻辑
    /// </summary>
    public partial class VirtualKeyboard : Window
    {
        public VirtualKeyboard()
        {
            InitializeComponent();
            //绑定数据
            txtClothNo.DataContext = cloth;
            setClothNumber("927A-19-1234-3-12-AAA");
        }
        /// <summary>
        /// 动态绑定布匹编号
        /// </summary>
        /// <param name="number"></param>
        public void setClothNumber(string number)
        {
            cloth.clothNum = number;
        }
        private ClothNumber _cloth = new ClothNumber();
        //封装属性
        public ClothNumber cloth
        {
            get { return _cloth; }
            set
            {
                _cloth = value;
            }
        }

        /// <summary>
        /// 按钮相关操作
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                Button btnTemp = sender as Button;
                if (btnTemp.Content.ToString().Equals("清空"))
                    this.txtClothNo.Clear();
                else if (btnTemp.Content.ToString().Equals("退出"))
                    this.Close();
                else if (btnTemp.Content.ToString().Equals("退格"))
                    BackUp();
                else if (btnTemp.Content.ToString().Equals("确认"))
                    Submit();
                else
                    NumIn(btnTemp.Content.ToString());
            }
            catch (Exception ex)
            {
                LogisTrac.WriteLog(string.Format("Button_Click:{0}", ex.Message));
            }
        }

        /// <summary>
        /// 数字和字母输入
        /// </summary>
        private void NumIn(string content)
        {
            try
            {
                string strTemp = txtClothNo.Text;
                int idx = txtClothNo.SelectionStart;
                strTemp = strTemp.Insert(idx, content);
                txtClothNo.Text = strTemp;
                txtClothNo.SelectionStart = idx + 1;
                txtClothNo.Focus();
            }
            catch (Exception ex)
            {
                LogisTrac.WriteLog(string.Format("NumIn:{0}", ex.Message));
            }
        }

        /// <summary>
        /// 确认
        /// </summary>
        private void Submit()
        {
            try
            {
                if (txtClothNo.Text.Length < 3 || txtClothNo.Text.Length > 21)
                {
                    MessageBox.Show("布匹编号输入不合法必须为3-21位之间", "温馨提示", MessageBoxButton.OK);
                }
                else if (!Regex.IsMatch(txtClothNo.Text, "[0-9]{3}$"))
                {
                    MessageBox.Show("布匹编号后三位必须为数字", "温馨提示", MessageBoxButton.OK);
                }
                else
                {
                    OS.Spin.Commands.Controller.GetInstance().ChangeSnNo(txtClothNo.Text);
                    this.Close();
                }
            }
            catch (Exception ex)
            {
                LogisTrac.WriteLog(string.Format("Submit:{0}", ex.Message));
            }
        }

        /// <summary>
        /// 退格
        /// </summary>
        /// <param name="strTemp"></param>
        /// <param name="idx"></param>
        private void BackUp()
        {
            try
            {
                string strTemp = txtClothNo.Text;
                int idx = txtClothNo.SelectionStart;
                if (idx > 0)
                {
                    txtClothNo.Text = strTemp.Substring(0, idx - 1) + strTemp.Substring(idx);
                    txtClothNo.SelectionStart = idx - 1;
                }
                else
                {
                    txtClothNo.SelectionStart = 0;
                }
            }
            catch (Exception ex)
            {
                LogisTrac.WriteLog(string.Format("BackUp:{0]", ex.Message));
            }
        }
    }
}