Prism.Avalonia
8.1.97.11000
See the version list below for details.
dotnet add package Prism.Avalonia --version 8.1.97.11000
NuGet\Install-Package Prism.Avalonia -Version 8.1.97.11000
<PackageReference Include="Prism.Avalonia" Version="8.1.97.11000" />
paket add Prism.Avalonia --version 8.1.97.11000
#r "nuget: Prism.Avalonia, 8.1.97.11000"
// Install Prism.Avalonia as a Cake Addin #addin nuget:?package=Prism.Avalonia&version=8.1.97.11000 // Install Prism.Avalonia as a Cake Tool #tool nuget:?package=Prism.Avalonia&version=8.1.97.11000
Prism.Avalonia
Prism.Avalonia provides your Avalonia apps with Prism framework support so you can Navigate, create Dialog Windows and Notifications, provide Dependency Injection and internal Messaging easier than before! You will need both packages installed to get started.
With Prism.Avalonia's logic and development approach being similar to that of Prism for WPF, you can get started right away! Keep in mind, they are similar and not 1-to-1. Check out our Wiki and Avalonia Outlookish app for tips and tricks.
Package | Stable | Preview |
---|---|---|
Prism.Avalonia | ||
Prism.DryIoc.Avalonia |
Version Notice
Choose the NuGet package version that matches your Avalonia version. Just like Prism.WPF or Prism.Maui, your project must reference both the Prism.Avalonia (Core) and Prism.DryIoc.Avalonia (IoC container) packages to work.
Avalonia Version | NuGet Package |
---|---|
11.0 | 8.1.97.11000 (Core) (DryIoc) |
0.10.21 | 8.1.97.1021 (Core) (DryIoc) |
11.0 RC-1.1 | 8.1.97.11000-rc1.1 (Core) (DryIoc) |
11.0 Preview 8 | 8.1.97.11-preview.11.8 |
11.0 Preview 5 | 8.1.97.4-preview.11.5 |
11.0 Preview 4 | 8.1.97.3-preview.11.4 |
Be sure to check out the ChangeLog.md and Upgrading-to-Avalonia-11.md when upgrading your NuGet packages. Also, view the official Avalonia Upgrading from v0.10.
Install
Add the Prism.Avalonia and its DryIoc packages to your project:
# Avalonia v0.10.1021
Install-Package Prism.Avalonia -Version 8.1.97.1021
Install-Package Prism.DryIoc.Avalonia -Version 8.1.97.1021
# Avalonia v11-preview8
Install-Package Prism.Avalonia -Version 8.1.97.11000
Install-Package Prism.DryIoc.Avalonia -Version 8.1.97.11000
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 AvaloniaObject 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
Your default Avalonia Program.cs
file does not need modified. Below is provided as a sample.
public static class Program
{
public static AppBuilder BuildAvaloniaApp() =>
AppBuilder.Configure<App>()
.UsePlatformDetect()
.With(new X11PlatformOptions
{
EnableMultiTouch = true,
UseDBusMenu = true
})
.With(new Win32PlatformOptions())
.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();
}
}
Branching Strategy
Below is a basic branching hierarchy and strategy.
Branch | Purpose |
---|---|
master |
All releases are tagged published using the master branch |
develop |
The default & active development branch. When a feature set is completed and ready for public release, the develop branch will be merged into master and a new NuGet package will be published. |
feature/* |
New feature branch. Once completed, it is merged into develop and the branch must be deleted. |
stable/* |
Stable release base build which shares cherry-picked merges from develop . This branch must not be deleted. |
Contributing
Prism.Avalonia is an open-source project under the MIT license. We encourage community members like yourself to contribute.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. 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 is compatible. 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. |
.NET Core | netcoreapp3.1 is compatible. |
-
.NETCoreApp 3.1
- Avalonia (>= 11.0.0)
- Avalonia.Markup.Xaml.Loader (>= 11.0.0)
- Avalonia.ReactiveUI (>= 11.0.0)
- CommonServiceLocator (>= 2.0.5)
- Prism.Core (>= 8.1.97)
- System.Configuration.ConfigurationManager (>= 4.7.0)
-
net6.0
- Avalonia (>= 11.0.0)
- Avalonia.Markup.Xaml.Loader (>= 11.0.0)
- Avalonia.ReactiveUI (>= 11.0.0)
- CommonServiceLocator (>= 2.0.5)
- Prism.Core (>= 8.1.97)
- System.Configuration.ConfigurationManager (>= 4.7.0)
-
net7.0
- Avalonia (>= 11.0.0)
- Avalonia.Markup.Xaml.Loader (>= 11.0.0)
- Avalonia.ReactiveUI (>= 11.0.0)
- CommonServiceLocator (>= 2.0.5)
- Prism.Core (>= 8.1.97)
- System.Configuration.ConfigurationManager (>= 4.7.0)
NuGet packages (9)
Showing the top 5 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 |
|
OneWare.Essentials
Essentials Needed for One Ware Plugin Development |
|
Hypocrite.Services.Avalonia
A powerful base for Mvvm apps with Prism |
|
Abdrakov.Container.AvaloniaPrismAdapter
A lightweight container with adapter for Prism.Avalonia |
GitHub repositories (1)
Showing the top 1 popular GitHub repositories that depend on Prism.Avalonia:
Repository | Stars |
---|---|
yaobiao131/downkyicore
哔哩下载姬(跨平台版)downkyi,哔哩哔哩网站视频下载工具,支持批量下载,支持8K、HDR、杜比视界,提供工具箱(音视频提取、去水印等)。
|
Version | Downloads | Last updated |
---|---|---|
9.0.401.11110-pre | 416 | 8/4/2024 |
9.0.401.11074-pre | 116 | 7/26/2024 |
9.0.401.11000-pre | 312 | 4/28/2024 |
9.0.271.11074-pre | 175 | 4/13/2024 |
8.1.97.11073 | 5,722 | 4/28/2024 |
8.1.97.11072 | 7,133 | 1/27/2024 |
8.1.97.11000 | 8,069 | 7/5/2023 |
8.1.97.11000-rc1.1 | 796 | 6/2/2023 |
8.1.97.1021 | 1,999 | 6/1/2023 |
8.1.97.11-preview.11.8 | 117 | 5/31/2023 |
8.1.97.4-preview.11.5 | 499 | 2/8/2023 |
8.1.97.3-preview.11.4 | 135 | 2/4/2023 |
8.1.97.2 | 2,537 | 12/9/2022 |
8.1.97.1 | 893 | 12/9/2022 |
8.1.97 | 2,419 | 7/18/2022 |
7.2.0.1430 | 7,546 | 1/28/2021 |
7.2.0.1429 | 1,849 | 9/26/2020 |
7.2.0.1428 | 2,379 | 4/14/2020 |
7.2.0.1427 | 1,725 | 2/11/2020 |
7.2.0.1426 | 1,649 | 1/31/2020 |
7.2.0.1425 | 1,588 | 1/30/2020 |
7.2.0.1424 | 1,771 | 12/30/2019 |
7.2.0.1423 | 1,607 | 12/18/2019 |
7.2.0.1422 | 1,762 | 11/26/2019 |
7.2.0.1367 | 2,026 | 9/3/2019 |
7.1.0.431 | 1,720 | 6/25/2019 |
* Upgraded to support Avalonia v11.0.0