Inner scope navigation

This commit is contained in:
TheXamlGuy
2024-02-13 22:11:29 +00:00
parent 6e738becd4
commit 9fe2317c4f
30 changed files with 189 additions and 130 deletions
+3 -10
View File
@@ -38,9 +38,8 @@ public partial class App :
services.AddSingleton((IDispatcher)new Dispatcher(DispatcherQueue.GetForCurrentThread()));
services.AddTransient<INavigationProvider, NavigationProvider>();
services.AddSingleton<NavigationTargetCollection>();
services.AddTransient<INavigationTargetProvider, NavigationTargetProvider>();
services.AddNavigationHandler<WindowHandler>();
services.AddNavigationHandler<ContentControlHandler>();
services.AddTransient<IViewModelContentBinder, ViewModelContentBinder>();
@@ -53,9 +52,6 @@ public partial class App :
args.Placement = DesktopApplicationBarPlacemenet.Top;
});
services.AddNavigationHandler<WindowHandler>();
services.AddNavigationHandler<ContentControlHandler>();
services.AddSingleton<DesktopApplicationBar>();
services.AddContentTemplate<ApplicationBarViewModel, ApplicationBarView>();
services.AddContentTemplate<PrimaryViewModel, PrimaryView>();
@@ -65,12 +61,9 @@ public partial class App :
services.AddContentTemplate<SettingsViewModel, SettingsView>("Settings");
services.AddContentTemplate<GeneralSettingsNavigationViewModel, GeneralSettingsNavigationView>();
services.AddContentTemplate<WidgetSettingsNavigationViewModel, WidgetSettingsNavigationView>();
services.AddContentTemplate<WidgetNavigationViewModel, WidgetNavigationView>();
services.AddContentTemplate<WidgetSettingsViewModel, WidgetSettingsView>("WidgetSettings");
services.AddHandler<WidgetNavigationViewModelEnumerator>();
services.AddHandler<WidgetSettingsNavigationViewModelEnumerator>();
services.AddTransient<IInitializer, AppInitializer>();
})
.Build();
-18
View File
@@ -20,9 +20,6 @@
<None Remove="SecondaryView.xaml" />
<None Remove="SettingsButtonView.xaml" />
<None Remove="SettingsView.xaml" />
<None Remove="WidgetNavigationView.xaml" />
<None Remove="WidgetSettingsNavigationView.xaml" />
<None Remove="WidgetSettingsView.xaml" />
</ItemGroup>
<ItemGroup>
<Content Include="Assets\SplashScreen.scale-200.png" />
@@ -59,26 +56,11 @@
<ProjectReference Include="..\Hyperbar.Widget\Hyperbar.Widget.csproj" />
<ProjectReference Include="..\Hyperbar\Hyperbar.csproj" />
</ItemGroup>
<ItemGroup>
<Page Update="WidgetNavigationView.xaml">
<Generator>MSBuild:Compile</Generator>
</Page>
</ItemGroup>
<ItemGroup>
<Page Update="WidgetSettingsView.xaml">
<Generator>MSBuild:Compile</Generator>
</Page>
</ItemGroup>
<ItemGroup>
<Page Update="GeneralSettingsNavigationView.xaml">
<Generator>MSBuild:Compile</Generator>
</Page>
</ItemGroup>
<ItemGroup>
<Page Update="WidgetSettingsNavigationView.xaml">
<Generator>MSBuild:Compile</Generator>
</Page>
</ItemGroup>
<ItemGroup>
<Page Update="SettingsView.xaml">
<Generator>MSBuild:Compile</Generator>
+1 -3
View File
@@ -2,9 +2,7 @@
<Window
x:Class="Hyperbar.Windows.SettingsView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:interactions="using:Microsoft.Xaml.Interactions.Core"
xmlns:interactivity="using:Microsoft.Xaml.Interactivity">
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Window.SystemBackdrop>
<MicaBackdrop />
</Window.SystemBackdrop>
+2 -1
View File
@@ -1,4 +1,5 @@
using Hyperbar.UI.Windows;
using Hyperbar.Widget.Windows;
namespace Hyperbar.Windows;
@@ -15,7 +16,7 @@ public partial class SettingsViewModel :
ViewModelTemplateSelector = viewModelTemplateSelector;
Add<GeneralSettingsNavigationViewModel>("General");
Add<WidgetSettingsNavigationViewModel>("Widgets");
Add<WidgetNavigationViewModel>("Widgets");
}
public IViewModelTemplateSelector ViewModelTemplateSelector { get; }
@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<NavigationViewItem
x:Class="Hyperbar.Windows.WidgetNavigationView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Content="dsfsdvfsd" />
@@ -1,11 +0,0 @@
using Microsoft.UI.Xaml.Controls;
namespace Hyperbar.Windows;
public sealed partial class WidgetNavigationView :
NavigationViewItem
{
public WidgetNavigationView() =>
InitializeComponent();
}
@@ -1,11 +0,0 @@
using Hyperbar.UI.Windows;
namespace Hyperbar.Windows;
public class WidgetNavigationViewModel(IServiceProvider serviceProvider,
IServiceFactory serviceFactory,
IPublisher publisher,
ISubscriber subscriber,
IDisposer disposer,
string text) :
NavigationViewModel(serviceProvider, serviceFactory, publisher, subscriber, disposer, text);
@@ -1,15 +0,0 @@
using System.Security.Policy;
namespace Hyperbar.Windows;
public class WidgetNavigationViewModelEnumerator(IServiceFactory serviceFactory,
IPublisher publisher) :
INotificationHandler<Enumerate<WidgetNavigationViewModel>>
{
public async Task Handle(Enumerate<WidgetNavigationViewModel> args,
CancellationToken cancellationToken = default)
{
await publisher.PublishAsync(new Create<WidgetNavigationViewModel>(serviceFactory
.Create<WidgetNavigationViewModel>("fo")), nameof(WidgetSettingsNavigationViewModel), cancellationToken);
}
}
@@ -1,20 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<NavigationViewItem
x:Class="Hyperbar.Windows.WidgetSettingsNavigationView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:interactions="using:Microsoft.Xaml.Interactions.Core"
xmlns:interactivity="using:Microsoft.Xaml.Interactivity"
xmlns:ui="using:Hyperbar.UI.Windows"
Content="Widgets"
MenuItemsSource="{Binding}"
SelectsOnInvoked="False">
<interactivity:Interaction.Behaviors>
<interactions:EventTriggerBehavior EventName="Tapped">
<ui:NavigateAction Name="WidgetSettings" TargetName="Settings" />
</interactions:EventTriggerBehavior>
<interactions:EventTriggerBehavior EventName="Loaded">
<interactions:InvokeCommandAction Command="{Binding InitializeCommand}" />
</interactions:EventTriggerBehavior>
</interactivity:Interaction.Behaviors>
</NavigationViewItem>
@@ -1,13 +0,0 @@
using Microsoft.UI.Xaml.Controls;
namespace Hyperbar.Windows;
public partial class WidgetSettingsNavigationView :
NavigationViewItem
{
public WidgetSettingsNavigationView() =>
InitializeComponent();
protected WidgetSettingsNavigationViewModel ViewModel =>
(WidgetSettingsNavigationViewModel)DataContext;
}
@@ -1,16 +0,0 @@
using Hyperbar.UI.Windows;
namespace Hyperbar.Windows;
[NotificationHandler(nameof(WidgetSettingsNavigationViewModel))]
public class WidgetSettingsNavigationViewModel(IViewModelTemplateSelector viewModelTemplateSelector,
IServiceProvider serviceProvider,
IServiceFactory serviceFactory,
IPublisher publisher,
ISubscriber subscriber,
IDisposer disposer,
string text) :
NavigationViewModel<WidgetNavigationViewModel>(serviceProvider, serviceFactory, publisher, subscriber, disposer, text)
{
public IViewModelTemplateSelector ViewModelTemplateSelector => viewModelTemplateSelector;
}
-9
View File
@@ -1,9 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<UserControl
x:Class="Hyperbar.Windows.WidgetSettingsView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid>
<Button>Test</Button>
</Grid>
</UserControl>
@@ -1,12 +0,0 @@
using Microsoft.UI.Xaml.Controls;
namespace Hyperbar.Windows;
public partial class WidgetSettingsView : UserControl
{
public WidgetSettingsView() =>
InitializeComponent();
protected WidgetSettingsViewModel ViewModel =>
(WidgetSettingsViewModel)DataContext;
}
@@ -1,14 +0,0 @@
using Hyperbar.UI.Windows;
namespace Hyperbar.Windows;
public class WidgetSettingsViewModel(IViewModelTemplateSelector viewModelTemplateSelector,
IServiceProvider serviceProvider,
IServiceFactory serviceFactory,
IPublisher publisher,
ISubscriber subscriber,
IDisposer disposer) :
ObservableCollectionViewModel<IObservableViewModel>(serviceProvider, serviceFactory, publisher, subscriber, disposer)
{
public IViewModelTemplateSelector ViewModelTemplateSelector { get; } = viewModelTemplateSelector;
}