advanced-calculator/src/AdvancedCalculator/App.axaml.cs
2025-08-27 03:20:02 -05:00

78 lines
2.5 KiB
C#

using AdvancedCalculator.ViewModels;
using AdvancedCalculator.Views;
using Avalonia;
using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.Data.Core.Plugins;
using Avalonia.Markup.Xaml;
using Avalonia.Markup.Xaml.Styling;
using Avalonia.Styling;
using System;
namespace AdvancedCalculator;
public partial class App : Application
{
public override void Initialize()
{
AvaloniaXamlLoader.Load(this);
}
public override void OnFrameworkInitializationCompleted()
{
// Line below is needed to remove Avalonia data validation.
// Without this line you will get duplicate validations from both Avalonia and CT
BindingPlugins.DataValidators.RemoveAt(0);
// Load platform-specific styles (typography, scrollbars overrides)
try
{
var styles = Current?.Styles;
if (styles is not null)
{
if (OperatingSystem.IsAndroid())
{
styles.Add(new StyleInclude(new Uri("avares://AdvancedCalculator/"))
{
Source = new Uri("avares://AdvancedCalculator.Android/Styles/Android.axaml")
});
}
else if (OperatingSystem.IsBrowser())
{
styles.Add(new StyleInclude(new Uri("avares://AdvancedCalculator/"))
{
Source = new Uri("avares://AdvancedCalculator.Browser/Styles/Browser.axaml")
});
}
else
{
styles.Add(new StyleInclude(new Uri("avares://AdvancedCalculator/"))
{
Source = new Uri("avares://AdvancedCalculator.Desktop/Styles/Desktop.axaml")
});
}
}
}
catch
{
// If a platform-specific style dictionary is missing, continue without failing.
}
if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
{
desktop.MainWindow = new MainWindow
{
DataContext = new MainViewModel()
};
}
else if (ApplicationLifetime is ISingleViewApplicationLifetime singleViewPlatform)
{
singleViewPlatform.MainView = new MainView
{
DataContext = new MainViewModel()
};
}
base.OnFrameworkInitializationCompleted();
}
}