diff --git a/src/MainWindow.axaml b/src/MainWindow.axaml index 4728b15..7a6073b 100644 --- a/src/MainWindow.axaml +++ b/src/MainWindow.axaml @@ -31,9 +31,6 @@ Grid.Row="1" IsReadOnly="True" ItemsSource="{Binding SddpDevices}"> - - - diff --git a/src/MainWindowViewModel.cs b/src/MainWindowViewModel.cs index bac30f9..6cdbeec 100644 --- a/src/MainWindowViewModel.cs +++ b/src/MainWindowViewModel.cs @@ -22,16 +22,24 @@ public partial class MainWindowViewModel : ObservableObject SelectedNetworkAdapter = NetworkAdapters.FirstOrDefault(); } - private async void LocatorOnDeviceUnavailable(object? sender, DeviceUnavailableEventArgs e) { } + private void LocatorOnDeviceUnavailable(object? sender, DeviceUnavailableEventArgs e) + { + var existingDevice = SddpDevices.FirstOrDefault(x => + string.Equals(x.Usn, e.DiscoveredDevice.Usn, StringComparison.Ordinal)); + if(existingDevice is null) return; + Dispatcher.UIThread.Invoke(() => SddpDevices.Remove(existingDevice)); + } private async void LocatorOnDeviceAvailable(object? sender, DeviceAvailableEventArgs e) { - if (e.IsNewlyDiscovered) + if (!e.IsNewlyDiscovered) { - var discoveredDeviceViewModel = new DiscoveredDeviceViewModel(e.DiscoveredDevice); - Dispatcher.UIThread.Invoke(() => SddpDevices.Add(discoveredDeviceViewModel)); - await discoveredDeviceViewModel.GetFurtherInformationAsync(); + return; } + + var discoveredDeviceViewModel = new DiscoveredDeviceViewModel(e.DiscoveredDevice); + Dispatcher.UIThread.Invoke(() => SddpDevices.Add(discoveredDeviceViewModel)); + await discoveredDeviceViewModel.GetFurtherInformationAsync(); } [ObservableProperty]