-
Notifications
You must be signed in to change notification settings - Fork 45
PrismApplication Entry Point
Damian edited this page Jul 15, 2022
·
4 revisions
To get started using Prism.Avalonia we simply need to add a few pieces to your base Avalonia program's entry point. This example comes directly from the SampleMvvmApp
in the repository.
You may choose to separate your Program.cs
and App.axml.cs
or just throw everything into your App.axml.cs
file. Below is example of them split apart.
using System.Diagnostics.CodeAnalysis;
using Avalonia;
using Avalonia.Logging;
namespace SampleMvvmApp
{
public class Program
{
public static AppBuilder BuildAvaloniaApp()
{
var builder = AppBuilder
.Configure<App>()
.UsePlatformDetect()
.With(new X11PlatformOptions { EnableMultiTouch = true, UseDBusMenu = true, })
.With(new Win32PlatformOptions { EnableMultitouch = true, AllowEglInitialization = true, })
.UseSkia();
#if DEBUG
builder.LogToTrace(LogEventLevel.Debug, LogArea.Property, LogArea.Layout, LogArea.Binding);
#endif
return builder;
}
// Initialization code. Don't use any Avalonia, third-party APIs or any
// SynchronizationContext-reliant code before AppMain is called: things aren't initialized
// yet and stuff might break.
[ExcludeFromCodeCoverage]
static void Main(string[] args) => BuildAvaloniaApp().StartWithClassicDesktopLifetime(args);
}
}
using System;
using Avalonia;
using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.Markup.Xaml;
using Prism.DryIoc;
using Prism.Ioc;
using SampleDialogApp.ViewModels;
using SampleDialogApp.Views;
namespace SampleDialogApp
{
public partial class App : PrismApplication
{
public override void Initialize()
{
AvaloniaXamlLoader.Load(this);
base.Initialize();
}
public override void OnFrameworkInitializationCompleted()
{
if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
{
desktop.MainWindow = new MainWindow();
}
base.OnFrameworkInitializationCompleted();
}
protected override IAvaloniaObject CreateShell()
{
Console.WriteLine("CreateShell()");
return Container.Resolve<MainWindow>();
}
protected override void RegisterTypes(IContainerRegistry containerRegistry)
{
containerRegistry.Register<MainWindow>();
containerRegistry.RegisterDialog<NotificationDialogView, NotificationDialogViewModel>();
}
}
}