diff --git a/src/Artemis.UI/Screens/Sidebar/SidebarViewModel.cs b/src/Artemis.UI/Screens/Sidebar/SidebarViewModel.cs index 039cc2404..b8ad5aede 100644 --- a/src/Artemis.UI/Screens/Sidebar/SidebarViewModel.cs +++ b/src/Artemis.UI/Screens/Sidebar/SidebarViewModel.cs @@ -30,6 +30,7 @@ public class SidebarViewModel : ActivatableViewModelBase private readonly IWindowService _windowService; private ReadOnlyObservableCollection _sidebarCategories = new(new ObservableCollection()); private SidebarScreenViewModel? _selectedScreen; + private bool _updating; public SidebarViewModel(IRouter router, IProfileService profileService, IWindowService windowService, ISidebarVmFactory sidebarVmFactory) { @@ -57,7 +58,12 @@ public class SidebarViewModel : ActivatableViewModelBase SourceList profileCategories = new(); this.WhenActivated(d => { - _router.CurrentPath.WhereNotNull().Subscribe(r => SelectedScreen = SidebarScreen.GetMatch(r)).DisposeWith(d); + _router.CurrentPath.WhereNotNull().Subscribe(r => + { + _updating = true; + SelectedScreen = SidebarScreen.GetMatch(r); + _updating = false; + }).DisposeWith(d); Observable.FromEventPattern(x => profileService.ProfileCategoryAdded += x, x => profileService.ProfileCategoryAdded -= x) .Subscribe(e => profileCategories.Add(e.EventArgs.ProfileCategory)) @@ -115,6 +121,9 @@ public class SidebarViewModel : ActivatableViewModelBase private void NavigateToScreen(SidebarScreenViewModel sidebarScreenViewModel) { + if (_updating) + return; + Dispatcher.UIThread.Invoke(async () => { try