Introduce Avalonia as a new cross-platform UI option, including new XAML and code-behind files for the application and main window. Update Program.cs to support a --avalonia launch argument and add corresponding launch profile. Integrate Avalonia NuGet packages and ensure DataModel supports UI-thread invocation for all frontends. All business logic and state are shared via DI, enabling consistent behavior across WinForms, WPF, and Avalonia.
20 lines
657 B
C#
20 lines
657 B
C#
using Avalonia.Controls.ApplicationLifetimes;
|
|
using Avalonia.Markup.Xaml;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
|
|
namespace ImageCatalog_2;
|
|
|
|
public partial class AvaloniaApp : Avalonia.Application
|
|
{
|
|
public override void Initialize() => AvaloniaXamlLoader.Load(this);
|
|
|
|
public override void OnFrameworkInitializationCompleted()
|
|
{
|
|
if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
|
|
{
|
|
var model = Program.ServiceProvider.GetRequiredService<DataModel>();
|
|
desktop.MainWindow = new AvaloniaMainWindow(model);
|
|
}
|
|
base.OnFrameworkInitializationCompleted();
|
|
}
|
|
}
|