There is a newer prerelease version of this package available.
See the version list below for details.
dotnet add package Prism.DryIoc.Avalonia --version                
NuGet\Install-Package Prism.DryIoc.Avalonia -Version                
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="Prism.DryIoc.Avalonia" Version="" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Prism.DryIoc.Avalonia --version                
#r "nuget: Prism.DryIoc.Avalonia,"                
#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 Prism.DryIoc.Avalonia as a Cake Addin
#addin nuget:?package=Prism.DryIoc.Avalonia&version=

// Install Prism.DryIoc.Avalonia as a Cake Tool
#tool nuget:?package=Prism.DryIoc.Avalonia&version=                


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.


  • Prism.Avalonia v9.0.401-pre just arrived!
  • Prism.Avalonia v9.0.271-pre just arrived!
  • Follow the Upgrading to Prism v9.0.x-pre guide for breaking changes

For more samples outside of this repo, check out:

Sample Outlookish

With Prism.Avalonia's logic and development approach being similar to that of Prism for WPF, so 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 Releases

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.

Package Stable Preview
Prism.Avalonia Prism.Avalonia NuGet Badge Prism.Avalonia NuGet Badge
Prism.DryIoc.Avalonia Prism.DryIoc.Avalonia NuGet Badge Prism.DryIoc.Avalonia NuGet Badge

Version Notice

Choose the NuGet package version that matches your Avalonia version.

Our versioning schema is based on the SemVer using the format MAJOR.MINOR.PATCH.REVISION. The REVISION segment indicates the Avalonia version support. For instance v8.1.97.11000 of this library supports, Prism v8.1.97 and Avalonia v11.0.x.

Prism Version Avalonia Version NuGet Package
v9.0.401-pre 11.0.7 v9.0.401.11000-pre (Core) (DryIoc)
v9.0.271-pre 11.0.7 v9.0.271.11000-pre (Core) (DryIoc)
v8.1.97 11.0.7 v8.1.97.11073 (Core) (DryIoc)
v8.1.97 0.10.21 v8.1.97.1021 (Core) (DryIoc)

Be sure to check out the and guides when upgrading your NuGet packages:


Prism.Avalonia is an open-source project under the MIT license. We encourage community members like yourself to contribute.

You can contribute today by creating a feature request, issue, or discussion on the forum. From there we can have a brief discussion as to where this fits into the backlog priority. If this is something that fits within the Prism architecture, we'll kindly ask you to create a Pull Request. Any PR made without first having an issue/discussion may be closed.

Issues posted without a description may be closed immediately. Use the discussion boards if you have a question, not Issues.


Add the Prism.Avalonia and its DryIoc packages to your project:

# Avalonia v11
Install-Package Prism.Avalonia -Version
Install-Package Prism.DryIoc.Avalonia -Version

# Avalonia v0.10.1021
Install-Package Prism.Avalonia -Version
Install-Package Prism.DryIoc.Avalonia -Version

How to use


public class App : PrismApplication
    public static bool IsSingleViewLifetime =>
            .Any(a => a == "--fbdev" || a == "--drm");

    public static AppBuilder BuildAvaloniaApp() =>

    public override void Initialize()
        base.Initialize();              // <-- Required

    protected override void RegisterTypes(IContainerRegistry containerRegistry)
        // Register Services
        containerRegistry.Register<IRestService, RestService>();

        // Views - Generic

        // 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
            return Container.Resolve<MainWindow>();

    protected override void ConfigureModuleCatalog(IModuleCatalog moduleCatalog)
        // Register modules

    /// <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));


Your default Avalonia Program.cs file does not need to be modified. Below is provided as a sample.

public static class Program
    public static AppBuilder BuildAvaloniaApp() =>
            .With(new X11PlatformOptions
                EnableMultiTouch = true,
                UseDBusMenu = true
            .With(new Win32PlatformOptions())

    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();
        if (args.Contains("--fbdev"))
            return builder.StartLinuxFbDev(args, scaling: GetScaling());
        else if (args.Contains("--drm"))
            return builder.StartLinuxDrm(args, scaling: GetScaling());
            return builder.StartWithClassicDesktopLifetime(args);

    static void SilenceConsole()
        new Thread(() =>
            Console.CursorVisible = false;
            while (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.

Sponsored by: Suess Labs a subsidary of Xeno Innovations, Inc.

Product 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 is compatible.  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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (5)

Showing the top 5 NuGet packages that depend on Prism.DryIoc.Avalonia:

Package Downloads

Essentials Needed for One Ware Plugin Development


A lightweight container with adapter for Prism.Avalonia


A powerful base for Mvvm apps with Prism




Avalonia Prism Internationalization module

GitHub repositories (1)

Showing the top 1 popular GitHub repositories that depend on Prism.DryIoc.Avalonia:

Repository Stars
Version Downloads Last updated
9.0.401.11000-pre 195 4/28/2024 125 4/13/2024 1,550 4/28/2024 4,667 1/27/2024 5,690 7/5/2023 763 6/2/2023 925 6/1/2023 103 5/31/2023 462 2/8/2023 124 2/4/2023 1,303 12/9/2022 300 12/9/2022
8.1.97 1,506 7/18/2022 3,763 1/28/2021 562 9/26/2020 803 4/14/2020 576 2/11/2020 589 1/31/2020 509 1/30/2020 597 12/30/2019 565 12/18/2019 789 11/26/2019 1,055 9/3/2019 679 6/25/2019

* Added .NET 8 support
     * Upgraded to support Avalonia v11.0.7
     * Removed unused CommonServiceLocator