You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

223 lines
7.2 KiB
C#

using ConsoleApp;
using GalaSoft.MvvmLight;
1 year ago
using GalaSoft.MvvmLight.Command;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using SlnMesnac.Business.business;
using SlnMesnac.Common;
using SlnMesnac.Repository.service;
using SlnMesnac.WPF.Page;
1 year ago
using SlnMesnac.WPF.Page.Generate;
using System;
using System.ComponentModel;
using System.Runtime.CompilerServices;
using System.Threading.Tasks;
using System.Timers;
1 year ago
using System.Windows;
using System.Windows.Controls;
using System.Windows.Threading;
1 year ago
namespace SlnMesnac.WPF.ViewModel
{
public class MainWindowViewModel: INotifyPropertyChanged
1 year ago
{
private readonly ILogger<MainWindowViewModel> _logger;
//代码生成
private readonly GenerateControl generateControl = new GenerateControl();
private readonly EmployeeLoginPage _employeeLoginPage = new EmployeeLoginPage();
private readonly ExecutePage _executePage = new ExecutePage();
private IBaseStaffService _baseStaffService;
private System.Timers.Timer timer;
public delegate void UIDCodeDelegate(string code);
public event UIDCodeDelegate UIDCodeDelegateEvent;
1 year ago
#region 参数定义
///// <summary>
///// PLC设备状态
///// </summary>
//private int _PlcStatus = 0;
//public int PlcStatus
//{
// get { return _PlcStatus; }
// set { _PlcStatus = value; RaisePropertyChanged(nameof(PlcStatus)); }
//}
///// <summary>
///// 打卡机状态
///// </summary>
//private int _clockStatus = 0;
//public int ClockStatus
//{
// get { return _clockStatus; }
// set { _clockStatus = value; RaisePropertyChanged(nameof(ClockStatus)); }
//}
1 year ago
///// <summary>
///// 扫码枪状态
///// </summary>
//private int _codeGunStatus = 0;
//public int CodeGunStatus
//{
// get { return _codeGunStatus; }
// set { _codeGunStatus = value; RaisePropertyChanged(nameof(CodeGunStatus)); }
//}
1 year ago
public System.Windows.Controls.UserControl _content;
public System.Windows.Controls.UserControl UserContent
{
get { return _content; }
set
{
_content = value;
OnPropertyChanged("UserContent");
1 year ago
}
}
#endregion
#region 事件定义
/// <summary>
/// 界面跳转按钮事件
/// </summary>
public RelayCommand<object> ControlOnClickCommand { get; set; }
/// <summary>
/// 打开系统键盘
/// </summary>
public RelayCommand<object> OpenSystemKeyboardCommand { get; set; }
1 year ago
/// <summary>
/// 窗体控制
/// </summary>
public RelayCommand<object> FormControlCommand { get; set; }
#endregion
public MainWindowViewModel()
{
//UserContent = _employeeLoginPage;
UserContent = _executePage;
1 year ago
_logger = App.ServiceProvider.GetService<ILogger<MainWindowViewModel>>();
var info = App.ServiceProvider.GetService<StringChange>();
1 year ago
ControlOnClickCommand = new RelayCommand<object>(obj => ControlOnClick(obj));
OpenSystemKeyboardCommand = new RelayCommand<object>(obj => OpenSystemKeyboard(obj));
1 year ago
FormControlCommand = new RelayCommand<object>(x => FormControl(x));
timer = new System.Timers.Timer(1000); // 1 second interval
timer.Elapsed += Timer_Tick;
timer.Enabled = true;
}
/// <summary>
/// 按钮文字转换事件
/// </summary>
public event PropertyChangedEventHandler PropertyChanged;
#region 参数
/// <summary>
/// 当前时间
/// </summary>
private string _currentTimeText = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
public string CurrentTimeText
{
get { return _currentTimeText; }
set { _currentTimeText = value; OnPropertyChanged("CurrentTimeText"); }
1 year ago
}
#endregion
1 year ago
/// <summary>
/// 窗体控制
/// </summary>
/// <param name="obj"></param>
private void FormControl(object obj)
{
try
{
string controlType = obj as string;
switch (controlType)
{
// 关闭当前窗口
case "Exit":
//Environment.Exit(0);
Application.Current.Shutdown();
break;
case "Generate":
UserContent = generateControl;
break;
// 还原 或者 最大化当前窗口
case "Normal":
if (Application.Current.MainWindow.WindowState == WindowState.Normal)
{
Application.Current.MainWindow.WindowState = WindowState.Maximized;
break;
}
if (Application.Current.MainWindow.WindowState == WindowState.Maximized)
{
Application.Current.MainWindow.WindowState = WindowState.Normal;
break;
}
break;
// 最小化当前窗口
case "Minimized":
Application.Current.MainWindow.WindowState = WindowState.Minimized;
break;
default:
break;
}
}
catch (Exception ex)
{
_logger.LogError("窗体控制逻辑异常", ex);
}
}
/// <summary>
/// 打开系统键盘
/// </summary>
/// <param name="obj"></param>
private void OpenSystemKeyboard(object obj)
{
System.Diagnostics.Process.Start("osk.exe");
}
1 year ago
/// <summary>
/// 界面跳转
/// </summary>
private void ControlOnClick(object obj)
{
try
{
string info = obj as string;
//UserContent = inStoreInfoControl;
switch (info)
{
case "Execute":
UserContent = _executePage;
break;
case "Employee":
UserContent = _employeeLoginPage;
break;
default:
UserContent = _executePage;
break;
}
1 year ago
}
catch (Exception ex)
{
_logger.LogError("界面跳转逻辑异常", ex);
}
}
private void Timer_Tick(object sender, ElapsedEventArgs e)
{
CurrentTimeText = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
}
public void OnPropertyChanged([CallerMemberName] string propertyName = "")
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
1 year ago
}
}