Sandreas.Avalonia.SimpleRouter
0.0.3
There is a newer version of this package available.
See the version list below for details.
See the version list below for details.
dotnet add package Sandreas.Avalonia.SimpleRouter --version 0.0.3
NuGet\Install-Package Sandreas.Avalonia.SimpleRouter -Version 0.0.3
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Sandreas.Avalonia.SimpleRouter" Version="0.0.3" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Sandreas.Avalonia.SimpleRouter --version 0.0.3
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Sandreas.Avalonia.SimpleRouter, 0.0.3"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Sandreas.Avalonia.SimpleRouter as a Cake Addin #addin nuget:?package=Sandreas.Avalonia.SimpleRouter&version=0.0.3 // Install Sandreas.Avalonia.SimpleRouter as a Cake Tool #tool nuget:?package=Sandreas.Avalonia.SimpleRouter&version=0.0.3
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
Avalonia.SimpleRouter
Cross platform view (model) router library for AvaloniaUI
Code Example:
// App.axaml.cs
public partial class App : Application
{
// ...
public override void OnFrameworkInitializationCompleted()
{
// In this example we use Microsoft DependencyInjection (instead of ReactiveUI / Splat)
// Splat would also work, just use the according methods
IServiceProvider services = ConfigureServices();
var mainViewModel = services.GetRequiredService<MainViewModel>();
if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
{
desktop.MainWindow = new MainWindow
{
DataContext = mainViewModel
};
}
else if (ApplicationLifetime is ISingleViewApplicationLifetime singleViewPlatform)
{
singleViewPlatform.MainView = new MainView
{
DataContext = mainViewModel
};
}
base.OnFrameworkInitializationCompleted();
}
private static ServiceProvider ConfigureServices()
{
var services = new ServiceCollection();
// Add the HistoryRouter as a service
services.AddSingleton<HistoryRouter<ViewModelBase>>(s => new HistoryRouter<ViewModelBase>(t => (ViewModelBase)s.GetRequiredService(t)));
// Add the ViewModels as a service (Main as singleton, others as transient)
services.AddSingleton<MainViewModel>();
services.AddTransient<HomeViewModel>();
services.AddTransient<SettingsViewModel>();
return services.BuildServiceProvider();
}
}
<UserControl xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:viewModels="clr-namespace:ToneAudioPlayer.ViewModels"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="ToneAudioPlayer.Views.MainView"
x:DataType="viewModels:MainViewModel">
<ContentControl Content="{Binding Content}"></ContentControl>
</UserControl>
// ViewModels/MainViewModel.cs
using Avalonia.SimpleRouter;
using CommunityToolkit.Mvvm.ComponentModel;
namespace ToneAudioPlayer.ViewModels;
public partial class MainViewModel : ViewModelBase
{
[ObservableProperty]
private ViewModelBase _content = default!;
public MainViewModel(HistoryRouter<ViewModelBase> router)
{
// register route changed event to set content to viewModel, whenever
// a route changes
router.CurrentViewModelChanged += viewModel => Content = viewModel;
// change to HomeView
router.GoTo<HomeViewModel>();
}
}
// more API method examples
router.GoTo<SettingsViewModel>();
if(router.HasNext) {
router.Forward(); // go forward to
}
if(router.HasPrev) {
router.Back(); // go back to last ViewModel
}
router.Go(-2); // go back two routes if possible, otherwise stay where you are
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net6.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.