/// <summary> /// Called after the behavior is attached to an AssociatedObject. /// Вызывается после того как поведение привяжется к AssociatedObject /// </summary> /// <remarks> /// Override this to hook up functionality to the AssociatedObject. /// </remarks> protected override void OnAttached() { base.OnAttached(); _deviceViewModel = AssociatedObject.DataContext as IRuntimeDeviceViewModel; _defectAcknowledgingService = _globalDefectAcknowledgingService.GetDefectAcknowledgingService( _deviceViewModel.Model as IRuntimeDevice); _assotiatedBorder = AssociatedObject; AssociatedObject.Unloaded += AssociatedObject_Unloaded; if (_deviceViewModel != null) { (_deviceViewModel.Model as IRuntimeDevice).DeviceValuesUpdated += async() => { await Task.Run((() => { CheckStateWidget(); })); }; (_deviceViewModel.Model as IRuntimeDevice).TcpDeviceConnection.ConnectionLostAction += async() => { await Task.Run((() => { CheckStateWidget(); })); }; _defectAcknowledgingService.AcknowledgeValueChanged += CheckStateWidget; CheckAckFail(); CheckStateWidget(); } }
private void ListWidgetRuntimeListBox_MouseRightButtonUp(object sender, MouseButtonEventArgs e) { if (!(sender is ListBox)) { return; } object o = (sender as ListBox).SelectedItem; if (o == null) { return; } if (o is IRuntimeDeviceViewModel) { IDefectAcknowledgingService defectAcknowledgingService = _globalDefectAcknowledgingService.GetDefectAcknowledgingService( (o as IRuntimeDeviceViewModel).Model as IRuntimeDevice); if (!defectAcknowledgingService.IsFailNeedsAcknowledge()) { if (((ListBox)sender).ContextMenu != null) { ((ListBox)sender).ContextMenu = null; } return; } ((ListBox)sender).ContextMenu = new ContextMenu(); MenuItem ackMenuItem = new MenuItem { Header = "Квитировать неисправность" }; ackMenuItem.Click += (se, ea) => { defectAcknowledgingService.AcknowledgeFail(); }; ((ListBox)sender).ContextMenu.Items.Add(ackMenuItem); } }
public IDefectAcknowledgingService GetDefectAcknowledgingService(IRuntimeDevice runtimeDevice) { if (_acknowledgingServices.ContainsKey(runtimeDevice)) { return(_acknowledgingServices[runtimeDevice]); } else { IDefectAcknowledgingService defectAcknowledgingService = _container.Resolve <IDefectAcknowledgingService>(); defectAcknowledgingService.Initialize(runtimeDevice); _acknowledgingServices.TryAdd(runtimeDevice, defectAcknowledgingService); return(defectAcknowledgingService); } }