private void MessageReceived(Message message) { if (message.ActionCode == MessageSentEvent.RepositoryUpdated) { CabinetList.Clear(); CabsVM.Clear(); IList <Cabinet> cabOut = _dataRepositoryService.GetCabinetsWithTwoTypeDevices <C2000Ethernet, RS485device>(); foreach (Cabinet cabinet in cabOut) { CabinetList.Add(cabinet); CabsVM.Add(new CabinetViewModel(cabinet, _ea));// Fill the TreeView with cabinets } } if (message.ActionCode == MessageSentEvent.UserSelectedItemInTreeView) { object dev = message.AttachedObject; if (IsCheckedByCabinets) { if (dev.GetType() == typeof(RS485device)) // Юзер кликнул на прибор RS485 в дереве { DevicesForProgramming.Clear(); DevicesForProgramming.Add((RS485device)message.AttachedObject); } if (dev.GetType() == typeof(C2000Ethernet)) // Юзер кликнул на прибор RS232 в дереве { DevicesForProgramming.Clear(); DevicesForProgramming.Add((C2000Ethernet)message.AttachedObject); } if (dev.GetType() == typeof(Cabinet)) //Юзер кликнул на шкаф в дереве { DevicesForProgramming.Clear(); Cabinet cab = (Cabinet)message.AttachedObject; foreach (object item in cab.GetAllDevicesList)//GetDevicesList<RS485device>()) { DevicesForProgramming.Add(item); } } DeviceCounter = 0; //Сброс счётчика запрограммированных приборов ибо юзер что то поменял } if (IsCheckedComplexVerification) { if (dev.GetType() == typeof(Cabinet)) //Юзер кликнул на шкаф в дереве { DevicesForProgramming.Clear(); Cabinet cab = (Cabinet)message.AttachedObject; foreach (RS485device item in cab.GetDevicesList <RS485device>()) { DevicesForProgramming.Add(item); } } } } if (message.ActionCode == MessageSentEvent.UpdateRS485SearchProgressBar) { _dispatcher.BeginInvoke(new Action(() => { SearchProgressBar = Convert.ToInt32((byte)message.AttachedObject); })); } }