chore(app): scaffold Avalonia application project

This commit is contained in:
dualfroz committed 2026-08-26 12:09:39 +02:00
1 parent 15fa5c3fd3
commit 1562acf8dd
6 files changed
+124

No files matched your search

+29
View File
@@ -0,0 +1,29 @@
<Application xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="Vantage.App.App"
RequestedThemeVariant="Dark">
<Application.Styles>
<FluentTheme />
<Style Selector="Border.card">
<Setter Property="Background" Value="{DynamicResource SurfaceBrush}" />
<Setter Property="CornerRadius" Value="8" />
<Setter Property="Padding" Value="14" />
<Setter Property="BorderBrush" Value="#2C323D" />
<Setter Property="BorderThickness" Value="1" />
</Style>
</Application.Styles>
<Application.Resources>
<ResourceDictionary>
<SolidColorBrush x:Key="AccentBrush" Color="#4FC3F7" />
<SolidColorBrush x:Key="OkBrush" Color="#4CAF50" />
<SolidColorBrush x:Key="WarnBrush" Color="#FFB300" />
<SolidColorBrush x:Key="DownBrush" Color="#EF5350" />
<SolidColorBrush x:Key="SurfaceBrush" Color="#1B1F27" />
<SolidColorBrush x:Key="SurfaceAltBrush" Color="#232833" />
</ResourceDictionary>
</Application.Resources>
</Application>
+36
View File
@@ -0,0 +1,36 @@
using Avalonia;
using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.Markup.Xaml;
using Microsoft.Extensions.DependencyInjection;
using Vantage.App.ViewModels;
using Vantage.App.Views;
namespace Vantage.App;
public partial class App : Application
{
public override void Initialize() => AvaloniaXamlLoader.Load(this);
public override void OnFrameworkInitializationCompleted()
{
var services = new ServiceCollection();
services.AddVantageApp(VantageAppServices.ResolveProviderMode());
var provider = services.BuildServiceProvider();
if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
{
var viewModel = provider.GetRequiredService<MainWindowViewModel>();
desktop.MainWindow = new MainWindow { DataContext = viewModel };
desktop.ShutdownRequested += (_, _) => viewModel.StopMonitoring();
_ = StartAsync(viewModel);
}
base.OnFrameworkInitializationCompleted();
}
private static async Task StartAsync(MainWindowViewModel viewModel)
{
await viewModel.InitializeAsync();
viewModel.StartMonitoring();
}
}
View File
Whitespace-only changes.
+16
View File
@@ -0,0 +1,16 @@
using Avalonia;
namespace Vantage.App;
internal static class Program
{
[STAThread]
public static void Main(string[] args) => BuildAvaloniaApp()
.StartWithClassicDesktopLifetime(args);
public static AppBuilder BuildAvaloniaApp() => AppBuilder
.Configure<App>()
.UsePlatformDetect()
.WithInterFont()
.LogToTrace();
}
+32
View File
@@ -0,0 +1,32 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<LangVersion>latest</LangVersion>
<BuiltInComInteropSupport>true</BuiltInComInteropSupport>
<ApplicationManifest>app.manifest</ApplicationManifest>
<AvaloniaUseCompiledBindingsByDefault>true</AvaloniaUseCompiledBindingsByDefault>
</PropertyGroup>
<ItemGroup>
<AvaloniaResource Include="Assets/**" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Avalonia" Version="11.0.10" />
<PackageReference Include="Avalonia.Desktop" Version="11.0.10" />
<PackageReference Include="Avalonia.Themes.Fluent" Version="11.0.10" />
<PackageReference Include="Avalonia.Fonts.Inter" Version="11.0.10" />
<PackageReference Include="Avalonia.Diagnostics" Version="11.0.10" Condition="'$(Configuration)' == 'Debug'" />
<PackageReference Include="CommunityToolkit.Mvvm" Version="8.2.2" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="6.0.1" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Vantage.Core\Vantage.Core.csproj" />
</ItemGroup>
</Project>
+11
View File
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
<assemblyIdentity version="1.0.0.0" name="Vantage.App" />
<application xmlns="urn:schemas-microsoft-com:asm.v3">
<windowsSettings>
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true/pm</dpiAware>
<dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">permonitorv2,permonitor</dpiAwareness>
</windowsSettings>
</application>
</assembly>