Example #1
0
        /// <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);
            }
        }
Example #3
0
 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);
     }
 }