private void UpdateObservableDrives() { Drive old = null; if (SelectedDrive != null) { old = SelectedDrive; } GoldDriveList.Clear(); FreeDriveList.Clear(); _mountService.GoldDrives.ForEach(GoldDriveList.Add); _mountService.FreeDrives.ForEach(FreeDriveList.Add); if (old != null && SelectedDrive == null) { SelectedDrive = old; } if (SelectedDrive != null) { var d1 = _mountService.GoldDrives.ToList().Find(x => x.Name == SelectedDrive.Name); if (d1 != null) { d1.Clone(SelectedDrive); SelectedDrive = d1; } else { var d2 = _mountService.FreeDrives.ToList().Find(x => x.Name == SelectedDrive.Name); if (d2 != null) { d2.Clone(SelectedDrive); SelectedDrive = d2; } } } else { if (_mountService.GoldDrives.Count > 0) { SelectedDrive = _mountService.GoldDrives.First(); } else if (_mountService.FreeDrives.Count > 0) { SelectedDrive = _mountService.FreeDrives.First(); } } NotifyPropertyChanged("FreeDriveList"); NotifyPropertyChanged("GoldDriveList"); }