public MainPageViewModel() { Application.Current.MainWindow.Loaded += MainWindow_Loaded; refreshtimer.Interval = TimeSpan.FromMilliseconds(100); refreshtimer.Tick += Refreshtimer_Tick; ReportInput = new ObservableCollection <ReportByte>(); ReportOutput = new ObservableCollection <ReportByte>(); IsConnected = false; IsConnectByPIDVID = false; SendByOutputReport = true; UpdateAvalibleDevices(); Сommand_Connect = new RelayCommand((p) => { USB.OnSpecifiedDeviceRemoved += Usb_OnSpecifiedDeviceRemoved; USB.OnDataRecieved += Usb_OnDataRecieved; if (IsConnectByPIDVID) { IsConnected = USB.Open(DeviceVID, DevicePID); } else { IsConnected = USB.Open(SelectedDevice); } if (IsConnected) { RaisePropertyChanged("USB"); for (UInt16 i = 0; i < USB.SpecifiedDevice.InputReportLength; i++) { ReportInput.Add(new ReportByte() { Color = Brushes.Black, Data = 0x00 }); } UpdateOutputReport(); } }, (p) => (SelectedDevice != null && !IsConnected)); Сommand_Disconnect = new RelayCommand((p) => { IsConnected = false; ReportInput.Clear(); ReportOutput.Clear(); USB.OnSpecifiedDeviceRemoved -= Usb_OnSpecifiedDeviceRemoved; USB.OnDataRecieved -= Usb_OnDataRecieved; USB.Close(); }, (p) => IsConnected); Сommand_WriteReport = new RelayCommand((p) => { SendReportToDevice(); }, (p) => IsConnected); }