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.

135 lines
4.1 KiB
C#

using Aucma.Scada.UI.Views;
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
using log4net;
using System;
using System.Windows;
namespace Aucma.Scada.UI.ViewModel
{
public partial class MainViewModel : ObservableObject
{
private static readonly log4net.ILog logHelper = LogManager.GetLogger(typeof(MainViewModel));
private readonly LogInfoControl logInfoControl = new LogInfoControl();
private readonly IndexControl indexControl = new IndexControl();
private readonly RecordControl recordControl = new RecordControl();
public MainViewModel()
{
//FormControlCommand = new RelayCommand<object>(obj=> FormControl(obj));
//OpenSystemKeyboardCommand = new RelayCommand(OpenSystemKeyboard);
UserContent = indexControl;
}
#region 参数定义
private int _PresentColor = 0;
public int PresentColor
{
get => _PresentColor;
set => SetProperty(ref _PresentColor, value);
}
public System.Windows.Controls.UserControl _content;
public System.Windows.Controls.UserControl UserContent
{
get => _content;
set => SetProperty(ref _content, value);
}
#endregion
#region 事件定义
/// <summary>
/// 界面跳转按钮事件
/// </summary>
[RelayCommand]
private void ControlOnClick(object obj)
{
try
{
string info = obj as string;
switch (info)
{
case "inde":
UserContent = indexControl;
break;
case "logInfo":
UserContent = logInfoControl;
break;
case "record":
UserContent = recordControl;
break;
default:
break;
}
}catch(Exception ex)
{
logHelper.Error("界面跳转逻辑异常", ex);
}
}
/// <summary>
/// 打开系统键盘
/// </summary>
[RelayCommand]
public void OpenSystemKeyboard()
{
try
{
MessageBox.Show("打开系统键盘");
}catch(Exception ex)
{
logHelper.Error("打开系统键盘逻辑异常", ex);
}
}
/// <summary>
/// 窗体控制
/// </summary>
[RelayCommand]
public void FormControl(object obj)
{
try
{
string controlType = obj as string;
switch (controlType)
{
// 关闭当前窗口
case "Exit":
//Environment.Exit(0);
Application.Current.Shutdown();
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)
{
logHelper.Error("窗体控制逻辑异常", ex);
}
}
#endregion
}
}