From 3f8e818b58127a2fad66ed67032344f553632c38 Mon Sep 17 00:00:00 2001 From: 魏曹先生 <1992414357@qq.com> Date: Wed, 7 Jan 2026 19:30:57 +0800 Subject: Add Avalonia Project --- JVDesktop/App.axaml | 4 ++-- JVDesktop/App.axaml.cs | 4 ++-- JVDesktop/JVDesktop.csproj | 2 +- JVDesktop/ViewLocator.cs | 5 ++--- JVDesktop/ViewModels/MainWindowViewModel.cs | 15 ++++++++++++--- JVDesktop/Views/MainWindow.axaml | 5 ++++- run.sh | 2 ++ 7 files changed, 25 insertions(+), 12 deletions(-) create mode 100755 run.sh diff --git a/JVDesktop/App.axaml b/JVDesktop/App.axaml index 24e82f2..4d268d0 100644 --- a/JVDesktop/App.axaml +++ b/JVDesktop/App.axaml @@ -8,8 +8,8 @@ - + - \ No newline at end of file + diff --git a/JVDesktop/App.axaml.cs b/JVDesktop/App.axaml.cs index b1bc4c0..4c26724 100644 --- a/JVDesktop/App.axaml.cs +++ b/JVDesktop/App.axaml.cs @@ -20,7 +20,7 @@ public partial class App : Application { if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop) { - // Avoid duplicate validations from both Avalonia and the CommunityToolkit. + // Avoid duplicate validations from both Avalonia and the CommunityToolkit. // More info: https://docs.avaloniaui.net/docs/guides/development-guides/data-validation#manage-validationplugins DisableAvaloniaDataAnnotationValidation(); desktop.MainWindow = new MainWindow @@ -44,4 +44,4 @@ public partial class App : Application BindingPlugins.DataValidators.Remove(plugin); } } -} \ No newline at end of file +} diff --git a/JVDesktop/JVDesktop.csproj b/JVDesktop/JVDesktop.csproj index 5ba2c97..e103899 100644 --- a/JVDesktop/JVDesktop.csproj +++ b/JVDesktop/JVDesktop.csproj @@ -1,7 +1,7 @@  WinExe - net9.0 + net8.0 enable true app.manifest diff --git a/JVDesktop/ViewLocator.cs b/JVDesktop/ViewLocator.cs index f289d15..6015998 100644 --- a/JVDesktop/ViewLocator.cs +++ b/JVDesktop/ViewLocator.cs @@ -7,12 +7,11 @@ namespace JVDesktop; public class ViewLocator : IDataTemplate { - public Control? Build(object? param) { if (param is null) return null; - + var name = param.GetType().FullName!.Replace("ViewModel", "View", StringComparison.Ordinal); var type = Type.GetType(name); @@ -20,7 +19,7 @@ public class ViewLocator : IDataTemplate { return (Control)Activator.CreateInstance(type)!; } - + return new TextBlock { Text = "Not Found: " + name }; } diff --git a/JVDesktop/ViewModels/MainWindowViewModel.cs b/JVDesktop/ViewModels/MainWindowViewModel.cs index 0ca52c8..4dd12b4 100644 --- a/JVDesktop/ViewModels/MainWindowViewModel.cs +++ b/JVDesktop/ViewModels/MainWindowViewModel.cs @@ -1,6 +1,15 @@ -namespace JVDesktop.ViewModels; +using System; +using System.Windows.Input; +using CommunityToolkit.Mvvm.Input; -public partial class MainWindowViewModel : ViewModelBase +namespace JVDesktop.ViewModels; + +public class MainWindowViewModel : ViewModelBase { - public string Greeting { get; } = "Welcome to Avalonia!"; + public string Greeting => "Welcome to Avalonia!"; + + public ICommand ButtonClickCommand { get; } = new RelayCommand(() => + { + Console.WriteLine("Button clicked"); + }); } diff --git a/JVDesktop/Views/MainWindow.axaml b/JVDesktop/Views/MainWindow.axaml index 9fb406d..13f20c4 100644 --- a/JVDesktop/Views/MainWindow.axaml +++ b/JVDesktop/Views/MainWindow.axaml @@ -15,6 +15,9 @@ - + + +