using ICSharpCode.AvalonEdit.Search;
using MaterialDesignThemes.Wpf;
using NPOI.SS.Formula.Functions;
using Opc.Ua;
using Prism.Commands;
using Prism.Events;
using Prism.Ioc;
using Prism.Mvvm;
using Prism.Regions;
using Prism.Services.Dialogs;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Windows;
using TeamAAS_VP.Controls;
using TeamAAS_VP.Core;
using TeamAAS_VP.Core.Cameras;
using TeamAAS_VP.Enums;
using TeamAAS_VP.Events;
using TeamAAS_VP.Models;
using TeamAAS_VP.Resources.Languages;
using TeamAAS_VP.ViewModels.User;
using TouchSocket.Core;
using WPFLocalizeExtension.Engine;
namespace TeamAAS_VP.ViewModels
{
public class SettingViewModel : BindableBase
{
IRegionManager _regionManager;
IEventAggregator _eventAggregator;
IContainerProvider _container;
IDialogService _dialogService;
bool isFirstLoad = true;
#region 属性
private Management _management;
public Management management
{
get { return _management; }
set { SetProperty(ref _management, value); }
}
private DeviceConfiguration _DeviceConfig;
///
/// 设备配置参数
///
public DeviceConfiguration DeviceConfig
{
get { return _DeviceConfig; }
set { SetProperty(ref _DeviceConfig, value); }
}
private ModbusTcpMasterConfig _ModbusTcpMasterConfig = new ModbusTcpMasterConfig();
///
/// Modbus TCP 主站配置(MDC 电批)
///
public ModbusTcpMasterConfig ModbusTcpMasterConfig
{
get { return _ModbusTcpMasterConfig; }
set { SetProperty(ref _ModbusTcpMasterConfig, value); }
}
private RobotInfo _SelectRobot;
///
/// 选中的机器人
///
public RobotInfo SelectRobot
{
get { return _SelectRobot; }
set { SetProperty(ref _SelectRobot, value);
if (value!=null && (value.RobotBrand == RobotBrand.XYZ_Platform || value.RobotBrand == RobotBrand.XYZU_Platform))
{
RobotSelectedPlc = management.DeviceConfig.Plcs.FirstOrDefault(p=>p.Id==value.PLC);
var root= management.RobotService.GetRobot(SelectRobot.Id);
if (root != null)
{
ResultsValues.Clear();
var res= root.GetNodesValue();
for (int i = 0; i < res.Count; i++)
{
if (res[i].StatusCode.Code != 2150891520)
{
ResultsValues.Add(res[i].Value.ToString());
}
else
{
break;
}
}
}
}
}
}
private FeederInfo _SelectFeeder;
///
/// 选中的Feeder
///
public FeederInfo SelectFeeder
{
get { return _SelectFeeder; }
set { SetProperty(ref _SelectFeeder, value); }
}
private PlcInfo _SelectPlc;
public PlcInfo SelectPlc
{
get { return _SelectPlc; }
set { SetProperty(ref _SelectPlc, value); }
}
private ObservableCollection _ResultsValues = new ObservableCollection();
public ObservableCollection ResultsValues { get => _ResultsValues; set => _ResultsValues = value; }
private CameraInfo _SelectCamera;
///
/// 选中的Camera
///
public CameraInfo SelectCamera
{
get { return _SelectCamera; }
set { SetProperty(ref _SelectCamera, value); }
}
private double _Title1;
public double Title1
{
get { return _Title1; }
set { SetProperty(ref _Title1, value); }
}
private double _Title2;
public double Title2
{
get { return _Title2; }
set { SetProperty(ref _Title2, value); }
}
private double _Title3;
public double Title3
{
get { return _Title3; }
set { SetProperty(ref _Title3, value); }
}
private double _Title4;
public double Title4
{
get { return _Title4; }
set { SetProperty(ref _Title4, value); }
}
private double _Body1;
public double Body1
{
get { return _Body1; }
set { SetProperty(ref _Body1, value); }
}
private double _Body2;
public double Body2
{
get { return _Body2; }
set { SetProperty(ref _Body2, value); }
}
private double _Body3;
public double Body3
{
get { return _Body3; }
set { SetProperty(ref _Body3, value); }
}
private double _Body4;
public double Body4
{
get { return _Body4; }
set { SetProperty(ref _Body4, value); }
}
private double _Captions1;
public double Captions1
{
get { return _Captions1; }
set { SetProperty(ref _Captions1, value); }
}
private double _Captions2;
public double Captions2
{
get { return _Captions2; }
set { SetProperty(ref _Captions2, value); }
}
private double _Captions3;
public double Captions3
{
get { return _Captions3; }
set { SetProperty(ref _Captions3, value); }
}
private double _Captions4;
public double Captions4
{
get { return _Captions4; }
set { SetProperty(ref _Captions4, value); }
}
private PlcInfo _RobotSelectedPlc;
public PlcInfo RobotSelectedPlc
{
get { return _RobotSelectedPlc; }
set { SetProperty(ref _RobotSelectedPlc, value);
if (SelectRobot != null)
{
if (value != null)
{
SelectRobot.PLC=value.Id;
}
else
{
SelectRobot.PLC = Guid.Empty;
}
}
}
}
#endregion
#region 命令
public DelegateCommand LoadedCommand { get; set; }
private DelegateCommand _AddRobotCommand;
public DelegateCommand AddRobotCommand =>
_AddRobotCommand ?? (_AddRobotCommand = new DelegateCommand(ExecuteAddRobotCommand));
private DelegateCommand _RemoveCommand;
public DelegateCommand RemoveCommand =>
_RemoveCommand ?? (_RemoveCommand = new DelegateCommand(ExecuteRemoveCommand));
private DelegateCommand _AddFeederCommand;
public DelegateCommand AddFeederCommand =>
_AddFeederCommand ?? (_AddFeederCommand = new DelegateCommand(ExecuteAddFeederCommand));
private DelegateCommand _RemoveFeederCommand;
public DelegateCommand RemoveFeederCommand =>
_RemoveFeederCommand ?? (_RemoveFeederCommand = new DelegateCommand(ExecuteRemoveFeederCommand));
private DelegateCommand _SelectLanguageCommand;
public DelegateCommand SelectLanguageCommand =>
_SelectLanguageCommand ?? (_SelectLanguageCommand = new DelegateCommand(ExecuteSelectLanguageCommand));
private DelegateCommand _SaveRobotsCommand;
public DelegateCommand SaveRobotsCommand =>
_SaveRobotsCommand ?? (_SaveRobotsCommand = new DelegateCommand(ExecuteSaveRobotsCommand));
private DelegateCommand _SaveFeedersCommand;
public DelegateCommand SaveFeedersCommand =>
_SaveFeedersCommand ?? (_SaveFeedersCommand = new DelegateCommand(ExecuteSaveFeedersCommand));
private DelegateCommand _SaveCommunicateCommand;
public DelegateCommand SaveCommunicateCommand =>
_SaveCommunicateCommand ?? (_SaveCommunicateCommand = new DelegateCommand(ExecuteSaveCommunicateCommand));
private DelegateCommand _AddCameraCommand;
public DelegateCommand AddCameraCommand =>
_AddCameraCommand ?? (_AddCameraCommand = new DelegateCommand(ExecuteAddCameraCommand));
private DelegateCommand _EditCameraCommand;
public DelegateCommand EditCameraCommand =>
_EditCameraCommand ?? (_EditCameraCommand = new DelegateCommand(ExecuteEditCameraCommand));
private DelegateCommand _RemoveCameraCommand;
public DelegateCommand RemoveCameraCommand =>
_RemoveCameraCommand ?? (_RemoveCameraCommand = new DelegateCommand(ExecuteRemoveCameraCommand));
private DelegateCommand _SaveCamerasCommand;
public DelegateCommand SaveCamerasCommand =>
_SaveCamerasCommand ?? (_SaveCamerasCommand = new DelegateCommand(ExecuteSaveCamerasCommand));
private DelegateCommand _AddPlcCommand;
public DelegateCommand AddPlcCommand =>
_AddPlcCommand ?? (_AddPlcCommand = new DelegateCommand(ExecuteAddPlcCommand));
private DelegateCommand _RemovePlcCommand;
public DelegateCommand RemovePlcCommand =>
_RemovePlcCommand ?? (_RemovePlcCommand = new DelegateCommand(ExecuteRemovePlcCommand));
private DelegateCommand _SavePlcsCommand;
public DelegateCommand SavePlcsCommand =>
_SavePlcsCommand ?? (_SavePlcsCommand = new DelegateCommand(ExecuteSavePlcsCommand));
#endregion
#region 事件
#endregion
public SettingViewModel(IRegionManager regionManager, IEventAggregator ea, IContainerProvider container, IDialogService dialogService)
{
_regionManager = regionManager;
_eventAggregator = ea;
_container = container;
_dialogService = dialogService;
management = _container.Resolve();
LoadedCommand = new DelegateCommand(OnLoad);
//订阅权限登录事件
_eventAggregator.GetEvent().Subscribe(LoginChange);
}
#region 方法
#region 机器人
private void ExecuteAddRobotCommand()
{
_dialogService.ShowDialog("AddRobot", rst =>
{
//对话框关闭之后的回调函数,可以在这解析结果。
ButtonResult result1 = rst.Result;
if (result1 == ButtonResult.OK)
{
var param = rst.Parameters.GetValue("Robot");
DeviceConfig.Robots.Add(new RobotInfo()
{
Id = param.Id,
RobotName = param.RobotName,
ConnectType = param.ConnectType,
RobotBrand = param.RobotBrand,
IP = param.IP,
Port = param.Port,
Terminator = param.Terminator,
});
_eventAggregator.GetEvent().Publish(new MessageParameter() { Msg = $"{Lang.添加完成}", Duration = 1 });
}
});
}
void ExecuteRemoveCommand()
{
if (MessageBox.Show(Lang.是否移除机器人, $"AAS", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes)
{
// 找到要删除的机器人
var robotToRemove = DeviceConfig.Robots.FirstOrDefault(r => r.Id == SelectRobot.Id);
if (robotToRemove != null)
{
DeviceConfig.Robots.Remove(robotToRemove);
_eventAggregator.GetEvent().Publish(new MessageParameter() { Msg = Lang.移除完成, Duration = 1 });
}
}
}
async void ExecuteSaveRobotsCommand()
{
var view = new ShowMessage($"AAS", Lang.是否保存机器人);
//show the dialog
var result = await DialogHost.Show(view, "RootDialog", null, null, null);
if (result != null && result is bool)
{
if (((bool)result))
{
management.DeviceConfig.Robots = DeviceConfig.Robots;
management.SaveRobotsDeviceConfig();
management.DeviceConfig.Robots = DeviceConfig.Robots;
_eventAggregator.GetEvent().Publish(new MessageParameter() { Msg = Lang.完成, Duration = 1 });
}
}
}
#endregion
#region 相机
///
/// 保存所有相机
///
async void ExecuteSaveCamerasCommand()
{
var view = new ShowMessage($"AAS", Lang.是否保存相机配置);
//show the dialog
var result = await DialogHost.Show(view, "RootDialog", null, null, null);
if (result != null && result is bool)
{
if (((bool)result))
{
management.DeviceConfig.Cameras = DeviceConfig.Cameras;
management.SaveCamerasDeviceConfig();
management.DeviceConfig.Cameras = DeviceConfig.Cameras;
_eventAggregator.GetEvent().Publish(new MessageParameter() { Msg = Lang.完成, Duration = 1 });
}
}
}
///
/// 移除相机
///
void ExecuteRemoveCameraCommand()
{
if (MessageBox.Show(Lang.是否移除相机, $"AAS", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes)
{
// 找到要删除的相机
var cameraToRemove = DeviceConfig.Cameras.FirstOrDefault(r => r.Id == SelectCamera.Id);
if (cameraToRemove != null)
{
DeviceConfig.Cameras.Remove(cameraToRemove);
_eventAggregator.GetEvent().Publish(new MessageParameter() { Msg = Lang.完成, Duration = 1 });
}
}
}
///
/// 编辑相机
///
void ExecuteEditCameraCommand()
{
if (SelectCamera == null) return;
bool isSelectedCameraBrandSucced = false;
CameraBrand cameraBrand = CameraBrand.HikRobot_MVS;
IDialogParameters parameters1 = new DialogParameters();
parameters1.Add("CameraBrand", SelectCamera.CameraBrand);
_dialogService.ShowDialog("SelectCameraBrand", parameters1, rst =>
{
if (rst.Result == ButtonResult.OK)
{
isSelectedCameraBrandSucced = true;
cameraBrand = rst.Parameters.GetValue("CameraBrand");
}
else
{
return;
}
});
if (!isSelectedCameraBrandSucced) { return; }
(bool isInstalled, string version) result = (false, "");
string softwarename = "";
switch (cameraBrand)
{
case CameraBrand.HikRobot_MVS:
softwarename = "MVS";
result = MvCamera.CheckSoftwareInstalled();
break;
case CameraBrand.Basler_Pylon:
softwarename = "Pylon 7";
result = BaslerCamera.CheckSoftwareInstalled();
break;
case CameraBrand.IRayple:
softwarename = "MV Viewer";
result = AHuaCamera.CheckSoftwareInstalled();
break;
case CameraBrand.Cognex:
softwarename = "Cognex VisionPro";
result = CognexCamera.CheckSoftwareInstalled();
break;
case CameraBrand.Galaxy:
softwarename = "Galaxy Viewer";
result = GalaxyCamera.CheckSoftwareInstalled();
break;
default:
break;
}
if (!result.isInstalled)
{
if (string.IsNullOrEmpty(result.version))
{
//未安装
MessageBox.Show(Lang.CameraSDKCheck_Message1.Replace("{name}", softwarename), "AAS", MessageBoxButton.OK, MessageBoxImage.Asterisk);
}
else
{
//版本较低
MessageBox.Show(Lang.CameraSDKCheck_Message2.Replace("{name}", softwarename).Replace("{version}", result.version).Replace("\\n", Environment.NewLine), "AAS", MessageBoxButton.OK, MessageBoxImage.Asterisk);
}
return;
}
IDialogParameters parameters = new DialogParameters();
parameters.Add("CameraBrand", cameraBrand);
parameters.Add("Camera", SelectCamera.Copy());
_dialogService.ShowDialog("EditCamera", parameters, rst =>
{
//对话框关闭之后的回调函数,可以在这解析结果。
ButtonResult result1 = rst.Result;
if (result1 == ButtonResult.OK)
{
var param = rst.Parameters.GetValue("Camera");
SelectCamera.CameraName = param.CameraName;
SelectCamera.SerialNumber = param.SerialNumber;
SelectCamera.Model = param.Model;
SelectCamera.ManufacturerName = param.ManufacturerName;
SelectCamera.CameraType = param.CameraType;
SelectCamera.CameraBrand = param.CameraBrand;
SelectCamera.CameraIp = param.CameraIp;
_eventAggregator.GetEvent().Publish(new MessageParameter() { Msg = Lang.完成, Duration = 1 });
}
});
}
///
/// 增加相机
///
void ExecuteAddCameraCommand()
{
bool isSelectedCameraBrandSucced = false;
CameraBrand cameraBrand = CameraBrand.HikRobot_MVS;
_dialogService.ShowDialog("SelectCameraBrand", rst =>
{
if (rst.Result == ButtonResult.OK)
{
isSelectedCameraBrandSucced = true;
cameraBrand = rst.Parameters.GetValue("CameraBrand");
}
else
{
return;
}
});
if (!isSelectedCameraBrandSucced) { return; }
;
(bool isInstalled, string version) result = (false, "");
string softwarename = "";
switch (cameraBrand)
{
case CameraBrand.HikRobot_MVS:
softwarename = "MVS";
result = MvCamera.CheckSoftwareInstalled();
break;
case CameraBrand.Basler_Pylon:
softwarename = "Pylon 7";
result = BaslerCamera.CheckSoftwareInstalled();
break;
case CameraBrand.IRayple:
softwarename = "MV Viewer";
result = AHuaCamera.CheckSoftwareInstalled();
break;
case CameraBrand.Cognex:
softwarename = "Cognex VisionPro";
result = CognexCamera.CheckSoftwareInstalled();
break;
case CameraBrand.Galaxy:
softwarename = "Galaxy Viewer";
result = GalaxyCamera.CheckSoftwareInstalled();
break;
default:
break;
}
if (!result.isInstalled)
{
if (string.IsNullOrEmpty(result.version))
{
//未安装
MessageBox.Show(Lang.CameraSDKCheck_Message1.Replace("{name}", softwarename), "AAS", MessageBoxButton.OK, MessageBoxImage.Asterisk);
}
else
{
//版本较低
MessageBox.Show(Lang.CameraSDKCheck_Message2.Replace("{name}", softwarename).Replace("{version}", result.version).Replace("\\n", Environment.NewLine), "AAS", MessageBoxButton.OK, MessageBoxImage.Asterisk);
}
return;
}
IDialogParameters parameters = new DialogParameters();
parameters.Add("CameraBrand", cameraBrand);
_dialogService.ShowDialog("AddCamera", parameters, rst =>
{
//对话框关闭之后的回调函数,可以在这解析结果。
ButtonResult result1 = rst.Result;
if (result1 == ButtonResult.OK)
{
var param = rst.Parameters.GetValue("Camera");
DeviceConfig.Cameras.Add(new CameraInfo()
{
Id = param.Id,
CameraName = param.CameraName,
SerialNumber = param.SerialNumber,
Model = param.Model,
ManufacturerName = param.ManufacturerName,
CameraType = param.CameraType,
CameraBrand = param.CameraBrand,
CameraIp = param.CameraIp
});
_eventAggregator.GetEvent().Publish(new MessageParameter() { Msg = Lang.完成, Duration = 1 });
}
});
}
#endregion
#region Feeder
void ExecuteAddFeederCommand()
{
_dialogService.ShowDialog("AddFeeder", rst =>
{
//对话框关闭之后的回调函数,可以在这解析结果。
ButtonResult result1 = rst.Result;
if (result1 == ButtonResult.OK)
{
var param = rst.Parameters.GetValue("Feeder");
DeviceConfig.Feeders.Add(new FeederInfo()
{
Id = param.Id,
FeederName = param.FeederName,
ConnectType = param.ConnectType,
FeederBrand = param.FeederBrand,
IP = param.IP,
Port = param.Port
});
_eventAggregator.GetEvent().Publish(new MessageParameter() { Msg = Lang.添加完成, Duration = 1 });
}
});
}
void ExecuteRemoveFeederCommand()
{
if (MessageBox.Show(Lang.是否移除Feeder, " AAS", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes)
{
// 找到要删除的机器人
var feederToRemove = DeviceConfig.Feeders.FirstOrDefault(r => r.Id == SelectFeeder.Id);
if (feederToRemove != null)
{
DeviceConfig.Feeders.Remove(feederToRemove);
_eventAggregator.GetEvent().Publish(new MessageParameter() { Msg = Lang.移除完成, Duration = 1 });
}
}
}
async void ExecuteSaveFeedersCommand()
{
var view = new ShowMessage($"AAS", Lang.是否保存Feeder);
//show the dialog
var result = await DialogHost.Show(view, "RootDialog", null, null, null);
if (result != null && result is bool)
{
if (((bool)result))
{
management.DeviceConfig.Feeders = DeviceConfig.Feeders;
management.SaveFeederDeviceConfig();
_eventAggregator.GetEvent().Publish(new MessageParameter() { Msg = Lang.完成, Duration = 1 });
}
}
}
#endregion
#region PLC
///
/// 保存PLC
///
async void ExecuteSavePlcsCommand()
{
var view = new ShowMessage($"AAS", Lang.是否保存PLC);
//show the dialog
var result = await DialogHost.Show(view, "RootDialog", null, null, null);
if (result != null && result is bool)
{
if (((bool)result))
{
management.DeviceConfig.Plcs = DeviceConfig.Plcs;
management.SavePlcDeviceConfig();
management.DeviceConfig.Plcs = DeviceConfig.Plcs;
_eventAggregator.GetEvent().Publish(new MessageParameter() { Msg = Lang.完成, Duration = 1 });
}
}
}
///
/// 移除PLC
///
void ExecuteRemovePlcCommand()
{
if (MessageBox.Show(Lang.是否移除PLC, $"AAS", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes)
{
// 找到要删除的plc
var plcToRemove = DeviceConfig.Plcs.FirstOrDefault(r => r.Id == SelectPlc.Id);
if (plcToRemove != null)
{
DeviceConfig.Plcs.Remove(plcToRemove);
_eventAggregator.GetEvent().Publish(new MessageParameter() { Msg = Lang.移除完成, Duration = 1 });
}
}
}
///
/// 增加PLC
///
void ExecuteAddPlcCommand()
{
_dialogService.ShowDialog("AddPlc", rst =>
{
//对话框关闭之后的回调函数,可以在这解析结果。
ButtonResult result1 = rst.Result;
if (result1 == ButtonResult.OK)
{
var param = rst.Parameters.GetValue("PLC");
DeviceConfig.Plcs.Add(new PlcInfo()
{
Id = param.Id,
Name = param.Name,
CommunicationType = param.CommunicationType,
EndpointUrl = param.EndpointUrl,
PlcIp = param.PlcIp,
PlcPort = param.PlcPort,
PlcForwardEnabled = param.PlcForwardEnabled,
PlcPortDevice = param.PlcPortDevice,
PlcQualityDevice = param.PlcQualityDevice,
PlcDataStartDevice = param.PlcDataStartDevice,
PlcReadyBitDevice = param.PlcReadyBitDevice,
PlcOkBitDevice = param.PlcOkBitDevice,
PlcNgBitDevice = param.PlcNgBitDevice,
PlcReceiveBitDevice = param.PlcReceiveBitDevice,
PlcHeartbeatDevice = param.PlcHeartbeatDevice,
PlcHeartbeatIntervalMs = param.PlcHeartbeatIntervalMs,
PlcBitTestDevice = param.PlcBitTestDevice,
PlcMaxDataBytes = param.PlcMaxDataBytes,
});
_eventAggregator.GetEvent().Publish(new MessageParameter() { Msg = Lang.添加完成, Duration = 1 });
}
});
}
#endregion
#region 通讯
async void ExecuteSaveCommunicateCommand(string parm)
{
if (parm == "TCPIP")
{
var view = new ShowMessage($"AAS", Lang.是否保存后台TCP通讯配置);
//show the dialog
var result = await DialogHost.Show(view, "RootDialog", null, null, null);
if (result != null && result is bool)
{
if (((bool)result))
{
management.DeviceConfig.BgCommunicate = DeviceConfig.BgCommunicate;
management.SaveBgTcpIpDeviceConfig();
_eventAggregator.GetEvent().Publish(new MessageParameter() { Msg = Lang.完成, Duration = 1 });
}
}
}
else if (parm == "ModbusTCP")
{
var view = new ShowMessage($"AAS", Lang.是否保存后台ModbusTCP通讯配置);
//show the dialog
var result = await DialogHost.Show(view, "RootDialog", null, null, null);
if (result != null && result is bool)
{
if (((bool)result))
{
management.DeviceConfig.BgModbusCommunicate = DeviceConfig.BgModbusCommunicate;
management.SaveBgModbusTcpDeviceConfig();
_eventAggregator.GetEvent().Publish(new MessageParameter() { Msg = Lang.完成, Duration = 1 });
}
}
}
else if (parm == "ModbusTCPMaster")
{
var view = new ShowMessage("AAS", Lang.是否保存ModbusTCP主站配置);
var result = await DialogHost.Show(view, "RootDialog", null, null, null);
if (result != null && result is bool && (bool)result)
{
management.ModbusTcpMasterConfig = ModbusTcpMasterConfig.Clone();
management.SaveModbusTcpMasterDeviceConfig();
management.InitModbusTcpMaster();
_eventAggregator.GetEvent().Publish(new MessageParameter() { Msg = Lang.完成, Duration = 1 });
}
}
else if (parm == "EIP")
{
var view = new ShowMessage("AAS", Lang.是否保存ModbusTCP主站配置);
var result = await DialogHost.Show(view, "RootDialog", null, null, null);
if (result != null && result is bool && (bool)result)
{
management.DeviceConfig.BgEthernetIPCommunicate = DeviceConfig.BgEthernetIPCommunicate;
management.SaveBgEthernetIPDeviceConfig();
_eventAggregator.GetEvent().Publish(new MessageParameter() { Msg = Lang.完成, Duration = 1 });
}
}
else if (parm == "SFIS")
{
var view = new ShowMessage("AAS", "是否保存 SFIS 通讯配置");
var result = await DialogHost.Show(view, "RootDialog", null, null, null);
if (result != null && result is bool && (bool)result)
{
management.DeviceConfig.BgSfisCommunicate = DeviceConfig.BgSfisCommunicate;
management.SaveBgSfisDeviceConfig();
_eventAggregator.GetEvent().Publish(new MessageParameter() { Msg = Lang.完成, Duration = 1 });
}
}
else
{
return;
}
}
#endregion
#region 语言
void ExecuteSelectLanguageCommand(string language)
{
if (string.Equals(language, "ChineseSimplified"))
{
management.CurrentLanguage = Enums.Language.ChineseSimplified;
management.SaveLanguageDeviceConfig();
var culture = new CultureInfo("zh-CN");
App.Current.Dispatcher.Thread.CurrentCulture = culture;
App.Current.Dispatcher.Thread.CurrentUICulture = culture;
LocalizeDictionary.Instance.Culture = culture;
Lang.Culture = culture;
Application.Current.Resources["DefaultFont"] = new System.Windows.Media.FontFamily("Microsoft YaHei");
_eventAggregator.GetEvent().Publish(new MessageParameter() { Msg = Lang.完成, Duration = 0.5 });
}
else if (string.Equals(language, "ChineseTraditional"))
{
management.CurrentLanguage = Enums.Language.ChineseTraditional;
management.SaveLanguageDeviceConfig();
var culture = new CultureInfo("zh-TW");
App.Current.Dispatcher.Thread.CurrentCulture = culture;
App.Current.Dispatcher.Thread.CurrentUICulture = culture;
LocalizeDictionary.Instance.Culture = culture;
Lang.Culture = culture;
Application.Current.Resources["DefaultFont"] = new System.Windows.Media.FontFamily("Microsoft YaHei");
_eventAggregator.GetEvent().Publish(new MessageParameter() { Msg = Lang.完成, Duration = 0.5 });
}
else if (string.Equals(language, "English"))
{
management.CurrentLanguage = Enums.Language.English;
management.SaveLanguageDeviceConfig();
var culture = new CultureInfo("en");
App.Current.Dispatcher.Thread.CurrentCulture = culture;
App.Current.Dispatcher.Thread.CurrentUICulture = culture;
LocalizeDictionary.Instance.Culture = culture;
Lang.Culture = culture;
Application.Current.Resources["DefaultFont"] = new System.Windows.Media.FontFamily("Segoe UI");
_eventAggregator.GetEvent().Publish(new MessageParameter() { Msg = Lang.完成, Duration = 0.5 });
}
else if (string.Equals(language, "Japanese"))
{
management.CurrentLanguage = Enums.Language.Japanese;
management.SaveLanguageDeviceConfig();
var culture = new CultureInfo("ja-JP");
App.Current.Dispatcher.Thread.CurrentCulture = culture;
App.Current.Dispatcher.Thread.CurrentUICulture = culture;
LocalizeDictionary.Instance.Culture = culture;
Lang.Culture = culture;
Application.Current.Resources["DefaultFont"] = new System.Windows.Media.FontFamily("Segoe UI");
_eventAggregator.GetEvent().Publish(new MessageParameter() { Msg = Lang.完成, Duration = 0.5 });
}
}
#endregion
private void OnLoad()
{
DeviceConfig = management.DeviceConfig.Clone();
ModbusTcpMasterConfig = management.ModbusTcpMasterConfig.Clone();
if (_container.Resolve().CurrentUser.userPart == Enums.UserPart.Operator)
{
IsAllowEdit = false;
}
else
{
IsAllowEdit = true;
}
if (isFirstLoad)
{
Title1 = (double)Application.Current.Resources["Font.Size.Title1"];
Title2 = (double)Application.Current.Resources["Font.Size.Title2"];
Title3 = (double)Application.Current.Resources["Font.Size.Title3"];
Title4 = (double)Application.Current.Resources["Font.Size.Title4"];
Body1 = (double)Application.Current.Resources["Font.Size.Body1"];
Body2 = (double)Application.Current.Resources["Font.Size.Body2"];
Body3 = (double)Application.Current.Resources["Font.Size.Body3"];
Body4 = (double)Application.Current.Resources["Font.Size.Body4"];
Captions1 = (double)Application.Current.Resources["Font.Size.Captions1"];
Captions2 = (double)Application.Current.Resources["Font.Size.Captions2"];
Captions3 = (double)Application.Current.Resources["Font.Size.Captions3"];
Captions4 = (double)Application.Current.Resources["Font.Size.Captions4"];
this.PropertyChanged += OnPropertyChanged;
isFirstLoad = false;
}
}
private void OnPropertyChanged(object sender, PropertyChangedEventArgs e)
{
switch (e.PropertyName)
{
case "Title1":
Application.Current.Resources["Font.Size.Title1"] = Title1;
break;
case "Title2":
Application.Current.Resources["Font.Size.Title2"] = Title2;
break;
case "Title3":
Application.Current.Resources["Font.Size.Title3"] = Title3;
break;
case "Title4":
Application.Current.Resources["Font.Size.Title4"] = Title4;
break;
case "Body1":
Application.Current.Resources["Font.Size.Body1"] = Body1;
break;
case "Body2":
Application.Current.Resources["Font.Size.Body2"] = Body2;
break;
case "Body3":
Application.Current.Resources["Font.Size.Body3"] = Body3;
break;
case "Body4":
Application.Current.Resources["Font.Size.Body4"] = Body4;
break;
case "Captions1":
Application.Current.Resources["Font.Size.Captions1"] = Captions1;
break;
case "Captions2":
Application.Current.Resources["Font.Size.Captions2"] = Captions2;
break;
case "Captions3":
Application.Current.Resources["Font.Size.Captions3"] = Captions3;
break;
case "Captions4":
Application.Current.Resources["Font.Size.Captions4"] = Captions4;
break;
default:
break;
}
}
#endregion
private bool _IsAllowEdit = false;
public bool IsAllowEdit
{
get { return _IsAllowEdit; }
set { SetProperty(ref _IsAllowEdit, value); }
}
private void LoginChange(Models.User user)
{
if (user.userPart == Enums.UserPart.Operator)
{
IsAllowEdit = false;
}
else
{
IsAllowEdit = true;
}
}
}
}