using System; using System.Collections.Generic; using System.Linq; using System.Text; using AGV_WPF.Models; using System.Collections.ObjectModel; using AGV_WPF.Commands; using System.Windows; using System.IO; using System.Runtime.Serialization.Formatters; using System.Runtime.Serialization.Formatters.Binary; using System.Configuration; using AGV_WPF_DisMember; namespace AGV_WPF.ExtraUI { public class AgvAliasWindowModel { public AgvAliasWindowModel(Window w) { this.aliasWindow = w as AgvAliasWindow; mySerial = LoadFile(configFile); for (int i = 0; i < MaxRecord; i++) { if (MainWindow.mainWindow != null) { if (mySerial.dic.ContainsKey(MainWindow.mainWindow.memberData[i].txtAGVNum)) { MainWindow.mainWindow.memberData[i].txtAgvAliasValue = mySerial.dic[MainWindow.mainWindow.memberData[i].txtAGVNum]; } } } if (aliasWindow != null) { aliasWindow.dataGrid1.DataContext = MainWindow.mainWindow.memberData; } SaveCommand = new DelegateCommand(); SaveCommand.ExecuteAction = new Action(this.Save); ExitCommand = new DelegateCommand(); ExitCommand.ExecuteAction = new Action(this.Exit); } AgvAliasWindow aliasWindow = null; public DelegateCommand SaveCommand { get; set; } public DelegateCommand ExitCommand { get; set; } public static int MaxRecord = MainWindow.mainWindow.AGVNUM_MAX; ObservableCollection agvList = new ObservableCollection(); public static string configFile = "AgvNameData"; SerialClass mySerial = new SerialClass(); public void Exit(object parameter) { aliasWindow.Close(); } public static SerialClass LoadFile(string filePath) { Stream stream = File.Open(filePath, FileMode.OpenOrCreate); SerialClass serial; BinaryFormatter formatter = new BinaryFormatter(); if (stream.Length <= 0) { serial = new SerialClass(); for (int i = 1; i <= (MaxRecord); i++) { if (!serial.dic.ContainsKey(string.Format("AGV{0}", i))) { serial.dic.Add(string.Format("AGV{0}", i), string.Format("AGV{0}", i)); } } formatter.Serialize(stream, serial); } else { serial = (SerialClass)formatter.Deserialize(stream); } stream.Close(); if (serial.dic.Count < MaxRecord) { for (int i = serial.dic.Count+1; i <= (MaxRecord);i++ ) { if (!serial.dic.ContainsKey(string.Format("AGV{0}", i))) { serial.dic.Add(string.Format("AGV{0}", i), string.Format("AGV{0}", i)); } } stream = File.Open(filePath, FileMode.OpenOrCreate); formatter.Serialize(stream, serial); } stream.Close(); return serial; } public void Save(object parameter) { Stream stream = File.Open(configFile, FileMode.OpenOrCreate); BinaryFormatter formatter = new BinaryFormatter(); for (int i = 0; i < MainWindow.mainWindow.memberData.Count; i++) { if (!mySerial.dic.Keys.Contains(MainWindow.mainWindow.memberData[i].txtAGVNum)) mySerial.dic.Add(MainWindow.mainWindow.memberData[i].txtAGVNum, MainWindow.mainWindow.memberData[i].txtAgvAlias); else mySerial.dic[MainWindow.mainWindow.memberData[i].txtAGVNum] = MainWindow.mainWindow.memberData[i].txtAgvAlias; } formatter.Serialize(stream, mySerial); stream.Close(); MessageBox.Show("保存成功"); } } [Serializable] public class SerialClass { public Dictionary dic = new Dictionary(); } public class AgvAliasClass : NotificationObject { private string agvNum; public string AgvNum { get { return agvNum; } set { agvNum = value; this.RaisePropertyChanged("AgvNum"); } } private string agvAlias; public string AgvAlias { get { return agvAlias; } set { agvAlias = value; this.RaisePropertyChanged("AgvAlias"); } } } }