mirror of
https://github.com/Artemis-RGB/Artemis
synced 2025-12-12 21:38:38 +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:
parent
eed6ff7a2b
commit
f3a4ccea8b
@ -24,7 +24,8 @@
|
|||||||
Margin="10 2"
|
Margin="10 2"
|
||||||
ItemsSource="{CompiledBinding SidebarScreen.Screens}"
|
ItemsSource="{CompiledBinding SidebarScreen.Screens}"
|
||||||
SelectedItem="{CompiledBinding SelectedScreen}"
|
SelectedItem="{CompiledBinding SelectedScreen}"
|
||||||
ItemContainerTheme="{StaticResource MenuTreeViewItem}">
|
ItemContainerTheme="{StaticResource MenuTreeViewItem}"
|
||||||
|
PointerReleased="InputElement_OnPointerReleased">
|
||||||
<TreeView.Styles>
|
<TreeView.Styles>
|
||||||
<Style Selector="TreeViewItem">
|
<Style Selector="TreeViewItem">
|
||||||
<Setter Property="IsExpanded" Value="{CompiledBinding IsExpanded, Mode=TwoWay, DataType=sidebar:SidebarScreenViewModel}" />
|
<Setter Property="IsExpanded" Value="{CompiledBinding IsExpanded, Mode=TwoWay, DataType=sidebar:SidebarScreenViewModel}" />
|
||||||
|
|||||||
@ -1,4 +1,7 @@
|
|||||||
using Avalonia.Markup.Xaml;
|
using System;
|
||||||
|
using Avalonia;
|
||||||
|
using Avalonia.Input;
|
||||||
|
using Avalonia.Markup.Xaml;
|
||||||
using Avalonia.ReactiveUI;
|
using Avalonia.ReactiveUI;
|
||||||
|
|
||||||
namespace Artemis.UI.Screens.Sidebar;
|
namespace Artemis.UI.Screens.Sidebar;
|
||||||
@ -10,4 +13,9 @@ public partial class SidebarView : ReactiveUserControl<SidebarViewModel>
|
|||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void InputElement_OnPointerReleased(object? sender, PointerReleasedEventArgs e)
|
||||||
|
{
|
||||||
|
if (e.Source is IDataContextProvider dataContextProvider && dataContextProvider.DataContext is SidebarScreenViewModel sidebarScreenViewModel)
|
||||||
|
ViewModel?.NavigateToScreen(sidebarScreenViewModel);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@ -52,7 +52,6 @@ public class SidebarViewModel : ActivatableViewModelBase
|
|||||||
});
|
});
|
||||||
|
|
||||||
AddCategory = ReactiveCommand.CreateFromTask(ExecuteAddCategory);
|
AddCategory = ReactiveCommand.CreateFromTask(ExecuteAddCategory);
|
||||||
this.WhenAnyValue(vm => vm.SelectedScreen).WhereNotNull().Subscribe(NavigateToScreen);
|
|
||||||
this.WhenAnyValue(vm => vm.SelectedScreen).WhereNotNull().Subscribe(s => SidebarScreen.ExpandIfRequired(s));
|
this.WhenAnyValue(vm => vm.SelectedScreen).WhereNotNull().Subscribe(s => SidebarScreen.ExpandIfRequired(s));
|
||||||
|
|
||||||
SourceList<ProfileCategory> profileCategories = new();
|
SourceList<ProfileCategory> profileCategories = new();
|
||||||
@ -119,7 +118,7 @@ public class SidebarViewModel : ActivatableViewModelBase
|
|||||||
.ShowAsync();
|
.ShowAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void NavigateToScreen(SidebarScreenViewModel sidebarScreenViewModel)
|
public void NavigateToScreen(SidebarScreenViewModel sidebarScreenViewModel)
|
||||||
{
|
{
|
||||||
if (_updating)
|
if (_updating)
|
||||||
return;
|
return;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user