1
0
mirror of https://github.com/Artemis-RGB/Artemis synced 2025-12-12 13:28:33 +00:00

Sidebar - Navigate on click instead of select, allowing to go back to the main screen of a menu item

This commit is contained in:
Robert 2023-08-26 21:51:58 +02:00
parent eed6ff7a2b
commit f3a4ccea8b
3 changed files with 12 additions and 4 deletions

View File

@ -24,7 +24,8 @@
Margin="10 2"
ItemsSource="{CompiledBinding SidebarScreen.Screens}"
SelectedItem="{CompiledBinding SelectedScreen}"
ItemContainerTheme="{StaticResource MenuTreeViewItem}">
ItemContainerTheme="{StaticResource MenuTreeViewItem}"
PointerReleased="InputElement_OnPointerReleased">
<TreeView.Styles>
<Style Selector="TreeViewItem">
<Setter Property="IsExpanded" Value="{CompiledBinding IsExpanded, Mode=TwoWay, DataType=sidebar:SidebarScreenViewModel}" />

View File

@ -1,4 +1,7 @@
using Avalonia.Markup.Xaml;
using System;
using Avalonia;
using Avalonia.Input;
using Avalonia.Markup.Xaml;
using Avalonia.ReactiveUI;
namespace Artemis.UI.Screens.Sidebar;
@ -10,4 +13,9 @@ public partial class SidebarView : ReactiveUserControl<SidebarViewModel>
InitializeComponent();
}
private void InputElement_OnPointerReleased(object? sender, PointerReleasedEventArgs e)
{
if (e.Source is IDataContextProvider dataContextProvider && dataContextProvider.DataContext is SidebarScreenViewModel sidebarScreenViewModel)
ViewModel?.NavigateToScreen(sidebarScreenViewModel);
}
}

View File

@ -52,7 +52,6 @@ public class SidebarViewModel : ActivatableViewModelBase
});
AddCategory = ReactiveCommand.CreateFromTask(ExecuteAddCategory);
this.WhenAnyValue(vm => vm.SelectedScreen).WhereNotNull().Subscribe(NavigateToScreen);
this.WhenAnyValue(vm => vm.SelectedScreen).WhereNotNull().Subscribe(s => SidebarScreen.ExpandIfRequired(s));
SourceList<ProfileCategory> profileCategories = new();
@ -119,7 +118,7 @@ public class SidebarViewModel : ActivatableViewModelBase
.ShowAsync();
}
private void NavigateToScreen(SidebarScreenViewModel sidebarScreenViewModel)
public void NavigateToScreen(SidebarScreenViewModel sidebarScreenViewModel)
{
if (_updating)
return;