Prism.Avalonia
8.1.97.2
See the version list below for details.
dotnet add package Prism.Avalonia --version 8.1.97.2
NuGet\Install-Package Prism.Avalonia -Version 8.1.97.2
<PackageReference Include="Prism.Avalonia" Version="8.1.97.2" />
paket add Prism.Avalonia --version 8.1.97.2
#r "nuget: Prism.Avalonia, 8.1.97.2"
// Install Prism.Avalonia as a Cake Addin
#addin nuget:?package=Prism.Avalonia&version=8.1.97.2
// Install Prism.Avalonia as a Cake Tool
#tool nuget:?package=Prism.Avalonia&version=8.1.97.2
Prism.Avalonia
Prism.Avalonia provides your Avalonia apps with Prism framework support so you can navigate and perform dependency injection easier than before.
Package | NuGet |
---|---|
Prism.Avalonia | |
Prism.DryIoc.Avalonia |
Prism.Avalonia's logic and development approach is similar to that of Prism for WPF so you can get started right away with Prism for Avalonia!
Install
Add the DryIoc package to your project:
Install-Package Prism.DryIoc.Avalonia -Version 8.1.97.2
How to use
App.xaml.cs
public class App : PrismApplication
{
public static bool IsSingleViewLifetime =>
Environment.GetCommandLineArgs()
.Any(a => a == "--fbdev" || a == "--drm");
public static AppBuilder BuildAvaloniaApp() =>
AppBuilder
.Configure<App>()
.UsePlatformDetect();
public override void Initialize()
{
AvaloniaXamlLoader.Load(this);
base.Initialize(); // <-- Required
}
protected override void RegisterTypes(IContainerRegistry containerRegistry)
{
// Register Services
containerRegistry.Register<IRestService, RestService>();
// Views - Generic
containerRegistry.Register<MainWindow>();
// Views - Region Navigation
containerRegistry.RegisterForNavigation<DashboardView, DashboardViewModel>();
containerRegistry.RegisterForNavigation<SettingsView, SettingsViewModel>();
containerRegistry.RegisterForNavigation<SidebarView, SidebarViewModel>();
}
protected override IAvaloniaObject CreateShell()
{
if (IsSingleViewLifetime)
return Container.Resolve<MainControl>(); // For Linux Framebuffer or DRM
else
return Container.Resolve<MainWindow>();
}
protected override void ConfigureModuleCatalog(IModuleCatalog moduleCatalog)
{
// Register modules
moduleCatalog.AddModule<Module1.Module>();
moduleCatalog.AddModule<Module2.Module>();
moduleCatalog.AddModule<Module3.Module>();
}
/// <summary>Called after <seealso cref="Initialize"/>.</summary>
protected override void OnInitialized()
{
// Register initial Views to Region.
var regionManager = Container.Resolve<IRegionManager>();
regionManager.RegisterViewWithRegion(RegionNames.ContentRegion, typeof(DashboardView));
regionManager.RegisterViewWithRegion(RegionNames.SidebarRegion, typeof(SidebarView));
}
}
Program.cs
public static class Program
{
public static AppBuilder BuildAvaloniaApp() =>
AppBuilder.Configure<App>()
.UsePlatformDetect()
.With(new X11PlatformOptions
{
EnableMultiTouch = true,
UseDBusMenu = true
})
.With(new Win32PlatformOptions
{
EnableMultitouch = true,
AllowEglInitialization = true
})
.UseSkia()
.UseReactiveUI()
.UseManagedSystemDialogs();
static int Main(string[] args)
{
double GetScaling()
{
var idx = Array.IndexOf(args, "--scaling");
if (idx != 0 && args.Length > idx + 1 &&
double.TryParse(args[idx + 1], NumberStyles.Any, CultureInfo.InvariantCulture, out var scaling))
return scaling;
return 1;
}
var builder = BuildAvaloniaApp();
InitializeLogging();
if (args.Contains("--fbdev"))
{
SilenceConsole();
return builder.StartLinuxFbDev(args, scaling: GetScaling());
}
else if (args.Contains("--drm"))
{
SilenceConsole();
return builder.StartLinuxDrm(args, scaling: GetScaling());
}
else
return builder.StartWithClassicDesktopLifetime(args);
}
static void SilenceConsole()
{
new Thread(() =>
{
Console.CursorVisible = false;
while (true)
Console.ReadKey(true);
})
{ IsBackground = true }.Start();
}
}
Product | Versions |
---|---|
.NET | net5.0 net5.0-windows net6.0 net6.0-android net6.0-ios net6.0-maccatalyst net6.0-macos net6.0-tvos net6.0-windows net7.0 net7.0-android net7.0-ios net7.0-maccatalyst net7.0-macos net7.0-tvos net7.0-windows |
.NET Core | netcoreapp3.1 |
-
.NETCoreApp 3.1
- Avalonia (>= 0.10.18)
- Avalonia.Controls.DataGrid (>= 0.10.18)
- Avalonia.Desktop (>= 0.10.18)
- Avalonia.Diagnostics (>= 0.10.18)
- Avalonia.LinuxFramebuffer (>= 0.10.18)
- Avalonia.Markup.Xaml.Loader (>= 0.10.18)
- Avalonia.ReactiveUI (>= 0.10.18)
- CommonServiceLocator (>= 2.0.5)
- Prism.Core (>= 8.1.97)
- System.Configuration.ConfigurationManager (>= 4.7.0)
-
net5.0
- Avalonia (>= 0.10.18)
- Avalonia.Controls.DataGrid (>= 0.10.18)
- Avalonia.Desktop (>= 0.10.18)
- Avalonia.Diagnostics (>= 0.10.18)
- Avalonia.LinuxFramebuffer (>= 0.10.18)
- Avalonia.Markup.Xaml.Loader (>= 0.10.18)
- Avalonia.ReactiveUI (>= 0.10.18)
- CommonServiceLocator (>= 2.0.5)
- Prism.Core (>= 8.1.97)
- System.Configuration.ConfigurationManager (>= 4.7.0)
-
net6.0
- Avalonia (>= 0.10.18)
- Avalonia.Controls.DataGrid (>= 0.10.18)
- Avalonia.Desktop (>= 0.10.18)
- Avalonia.Diagnostics (>= 0.10.18)
- Avalonia.LinuxFramebuffer (>= 0.10.18)
- Avalonia.Markup.Xaml.Loader (>= 0.10.18)
- Avalonia.ReactiveUI (>= 0.10.18)
- CommonServiceLocator (>= 2.0.5)
- Prism.Core (>= 8.1.97)
- System.Configuration.ConfigurationManager (>= 4.7.0)
NuGet packages (3)
Showing the top 3 NuGet packages that depend on Prism.Avalonia:
Package | Downloads |
---|---|
Prism.DryIoc.Avalonia
This extension is used to build Prism.Avalonia applications based on DryIoc. Users must install the Prism.Avalonia NuGet package as well. |
|
Prism.Unity.Avalonia
Package Description |
|
Prism.Autofac.Avalonia
Package Description |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
8.1.97.4-preview.11.5 | 110 | 2/8/2023 |
8.1.97.3-preview.11.4 | 57 | 2/4/2023 |
8.1.97.2 | 606 | 12/9/2022 |
8.1.97.1 | 237 | 12/9/2022 |
8.1.97 | 1,087 | 7/18/2022 |
7.2.0.1430 | 5,820 | 1/28/2021 |
7.2.0.1429 | 1,035 | 9/26/2020 |
7.2.0.1428 | 1,470 | 4/14/2020 |
7.2.0.1427 | 864 | 2/11/2020 |
7.2.0.1426 | 808 | 1/31/2020 |
7.2.0.1425 | 744 | 1/30/2020 |
7.2.0.1424 | 1,001 | 12/30/2019 |
7.2.0.1423 | 866 | 12/18/2019 |
7.2.0.1422 | 1,009 | 11/26/2019 |
7.2.0.1367 | 1,225 | 9/3/2019 |
7.1.0.431 | 819 | 6/25/2019 |
* Fixed: Automatically performs `AutoWireViewModel`
* No longer need to device `prism:ViewModelLocator.AutoWireViewModel="True"` in View
* Updated DryIoc to v4.8.0
* Updated to Avalonia v0.10.18