diff --git a/JiLinApp/App.axaml.cs b/JiLinApp/App.axaml.cs
index c28cb3c..b447fec 100644
--- a/JiLinApp/App.axaml.cs
+++ b/JiLinApp/App.axaml.cs
@@ -1,29 +1,26 @@
using Avalonia;
using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.Markup.Xaml;
-using JiLinApp.ViewModels;
-using JiLinApp.Views;
+using JiLinApp.Pages.Main;
-namespace JiLinApp
+namespace JiLinApp;
+
+public partial class App : Application
{
- public partial class App : Application
+ public override void Initialize()
{
- public override void Initialize()
- {
- AvaloniaXamlLoader.Load(this);
- }
+ AvaloniaXamlLoader.Load(this);
+ }
- public override void OnFrameworkInitializationCompleted()
+ public override void OnFrameworkInitializationCompleted()
+ {
+ if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
{
- if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
+ desktop.MainWindow = new MainWindow
{
- desktop.MainWindow = new MainWindow
- {
- DataContext = new MainWindowViewModel(),
- };
- }
-
- base.OnFrameworkInitializationCompleted();
+ DataContext = new MainWindowViewModel(),
+ };
}
+ base.OnFrameworkInitializationCompleted();
}
}
\ No newline at end of file
diff --git a/JiLinApp/Assets/Fonts/msyh.ttf b/JiLinApp/Assets/Fonts/msyh.ttf
new file mode 100644
index 0000000..aa23ae1
Binary files /dev/null and b/JiLinApp/Assets/Fonts/msyh.ttf differ
diff --git a/JiLinApp/Core/Avalonia/NativeHost.cs b/JiLinApp/Core/Avalonia/NativeHost.cs
new file mode 100644
index 0000000..db7f6c0
--- /dev/null
+++ b/JiLinApp/Core/Avalonia/NativeHost.cs
@@ -0,0 +1,17 @@
+using Avalonia.Controls;
+using Avalonia.Platform;
+using System;
+
+namespace JiLinApp.Core.Avalonia;
+
+public class NativeHost : NativeControlHost
+{
+ public IntPtr Handle { get; set; }
+
+ protected override IPlatformHandle CreateNativeControlCore(IPlatformHandle parent)
+ {
+ IPlatformHandle? pfHandle = base.CreateNativeControlCore(parent);
+ Handle = pfHandle.Handle;
+ return pfHandle;
+ }
+}
\ No newline at end of file
diff --git a/JiLinApp/Core/Avalonia/ViewModelBase.cs b/JiLinApp/Core/Avalonia/ViewModelBase.cs
new file mode 100644
index 0000000..845f2d2
--- /dev/null
+++ b/JiLinApp/Core/Avalonia/ViewModelBase.cs
@@ -0,0 +1,7 @@
+using ReactiveUI;
+
+namespace JiLinApp.Core.Avalonia;
+
+public class ViewModelBase : ReactiveObject
+{
+}
\ No newline at end of file
diff --git a/JiLinApp/JiLinApp.csproj b/JiLinApp/JiLinApp.csproj
index cfb0749..32b1aad 100644
--- a/JiLinApp/JiLinApp.csproj
+++ b/JiLinApp/JiLinApp.csproj
@@ -9,7 +9,6 @@
-
diff --git a/JiLinApp/Views/MainWindow.axaml b/JiLinApp/Pages/Main/MainWindow.axaml
similarity index 89%
rename from JiLinApp/Views/MainWindow.axaml
rename to JiLinApp/Pages/Main/MainWindow.axaml
index d5bd61f..cdedf81 100644
--- a/JiLinApp/Views/MainWindow.axaml
+++ b/JiLinApp/Pages/Main/MainWindow.axaml
@@ -1,10 +1,10 @@
diff --git a/JiLinApp/Pages/Main/MainWindow.axaml.cs b/JiLinApp/Pages/Main/MainWindow.axaml.cs
new file mode 100644
index 0000000..b8ab67b
--- /dev/null
+++ b/JiLinApp/Pages/Main/MainWindow.axaml.cs
@@ -0,0 +1,11 @@
+using Avalonia.Controls;
+
+namespace JiLinApp.Pages.Main;
+
+public partial class MainWindow : Window
+{
+ public MainWindow()
+ {
+ InitializeComponent();
+ }
+}
\ No newline at end of file
diff --git a/JiLinApp/Pages/Main/MainWindowViewModel.cs b/JiLinApp/Pages/Main/MainWindowViewModel.cs
new file mode 100644
index 0000000..3517e91
--- /dev/null
+++ b/JiLinApp/Pages/Main/MainWindowViewModel.cs
@@ -0,0 +1,8 @@
+using JiLinApp.Core.Avalonia;
+
+namespace JiLinApp.Pages.Main;
+
+public class MainWindowViewModel : ViewModelBase
+{
+ public string Greeting => "Welcome to Avalonia!";
+}
\ No newline at end of file
diff --git a/JiLinApp/Program.cs b/JiLinApp/Program.cs
index 5ea19e6..3a8ee81 100644
--- a/JiLinApp/Program.cs
+++ b/JiLinApp/Program.cs
@@ -1,24 +1,35 @@
using Avalonia;
+using Avalonia.Media;
using Avalonia.ReactiveUI;
using System;
-namespace JiLinApp
+namespace JiLinApp;
+
+internal class Program
{
- internal class Program
- {
- // 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.
- [STAThread]
- public static void Main(string[] args) => BuildAvaloniaApp()
- .StartWithClassicDesktopLifetime(args);
+ // 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.
+ [STAThread]
+ public static void Main(string[] args) => BuildAvaloniaApp()
+ .StartWithClassicDesktopLifetime(args);
- // Avalonia configuration, don't remove; also used by visual designer.
- public static AppBuilder BuildAvaloniaApp()
- => AppBuilder.Configure()
- .UsePlatformDetect()
- .WithInterFont()
- .LogToTrace()
- .UseReactiveUI();
- }
+ // Avalonia configuration, don't remove; also used by visual designer.
+ public static AppBuilder BuildAvaloniaApp()
+ => AppBuilder.Configure()
+ .UsePlatformDetect()
+ .WithInterFont()
+ .LogToTrace()
+ .UseReactiveUI()
+ .With(new FontManagerOptions
+ {
+ DefaultFamilyName = "avares://JiLinApp/Assets/Fonts/msyh.ttf#Microsoft YaHei",
+ FontFallbacks = new[]
+ {
+ new FontFallback
+ {
+ FontFamily = new FontFamily("avares://JiLinApp/Assets/Fonts/msyh.ttf#Microsoft YaHei")
+ }
+ }
+ });
}
\ No newline at end of file
diff --git a/JiLinApp/ViewModels/MainWindowViewModel.cs b/JiLinApp/ViewModels/MainWindowViewModel.cs
deleted file mode 100644
index cb7edd0..0000000
--- a/JiLinApp/ViewModels/MainWindowViewModel.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace JiLinApp.ViewModels
-{
- public class MainWindowViewModel : ViewModelBase
- {
- public string Greeting => "Welcome to Avalonia!";
- }
-}
\ No newline at end of file
diff --git a/JiLinApp/ViewModels/ViewModelBase.cs b/JiLinApp/ViewModels/ViewModelBase.cs
deleted file mode 100644
index 01c2f50..0000000
--- a/JiLinApp/ViewModels/ViewModelBase.cs
+++ /dev/null
@@ -1,8 +0,0 @@
-using ReactiveUI;
-
-namespace JiLinApp.ViewModels
-{
- public class ViewModelBase : ReactiveObject
- {
- }
-}
\ No newline at end of file
diff --git a/JiLinApp/Views/MainWindow.axaml.cs b/JiLinApp/Views/MainWindow.axaml.cs
deleted file mode 100644
index 6b3e137..0000000
--- a/JiLinApp/Views/MainWindow.axaml.cs
+++ /dev/null
@@ -1,12 +0,0 @@
-using Avalonia.Controls;
-
-namespace JiLinApp.Views
-{
- public partial class MainWindow : Window
- {
- public MainWindow()
- {
- InitializeComponent();
- }
- }
-}
\ No newline at end of file