From 6b9268d2d88c81c18f2cc21e343d321989dad99c Mon Sep 17 00:00:00 2001 From: 魏曹先生 <1992414357@qq.com> Date: Fri, 9 Jan 2026 21:30:49 +0800 Subject: Set up project structure and CLI integration --- JVDesktop/App.axaml | 17 ++++---- JVDesktop/App.axaml.cs | 11 ++--- JVDesktop/JVDesktop.csproj | 37 ++++++++++++----- JVDesktop/Program.cs | 6 +-- JVDesktop/ViewLocator.cs | 2 +- JVDesktop/ViewModels/DashboardViewModel.cs | 15 +++++++ JVDesktop/ViewModels/MainWindowViewModel.cs | 15 ------- JVDesktop/ViewModels/ViewModel.cs | 7 ++++ JVDesktop/ViewModels/ViewModelBase.cs | 7 ---- JVDesktop/Views/DashboardView.axaml | 63 +++++++++++++++++++++++++++++ JVDesktop/Views/DashboardView.axaml.cs | 15 +++++++ JVDesktop/Views/MainWindow.axaml | 23 ----------- JVDesktop/Views/MainWindow.axaml.cs | 11 ----- JVDesktop/app.manifest | 4 +- 14 files changed, 142 insertions(+), 91 deletions(-) create mode 100644 JVDesktop/ViewModels/DashboardViewModel.cs delete mode 100644 JVDesktop/ViewModels/MainWindowViewModel.cs create mode 100644 JVDesktop/ViewModels/ViewModel.cs delete mode 100644 JVDesktop/ViewModels/ViewModelBase.cs create mode 100644 JVDesktop/Views/DashboardView.axaml create mode 100644 JVDesktop/Views/DashboardView.axaml.cs delete mode 100644 JVDesktop/Views/MainWindow.axaml delete mode 100644 JVDesktop/Views/MainWindow.axaml.cs (limited to 'JVDesktop') diff --git a/JVDesktop/App.axaml b/JVDesktop/App.axaml index 4d268d0..1bebd8d 100644 --- a/JVDesktop/App.axaml +++ b/JVDesktop/App.axaml @@ -1,15 +1,16 @@ - - + - + - + diff --git a/JVDesktop/App.axaml.cs b/JVDesktop/App.axaml.cs index 4c26724..a2ba079 100644 --- a/JVDesktop/App.axaml.cs +++ b/JVDesktop/App.axaml.cs @@ -1,11 +1,10 @@ using Avalonia; using Avalonia.Controls.ApplicationLifetimes; -using Avalonia.Data.Core; using Avalonia.Data.Core.Plugins; using System.Linq; using Avalonia.Markup.Xaml; -using JVDesktop.ViewModels; using JVDesktop.Views; +using JVDesktop.ViewModels; namespace JVDesktop; @@ -20,12 +19,10 @@ public partial class App : Application { if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop) { - // 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 + desktop.MainWindow = new DashboardView { - DataContext = new MainWindowViewModel(), + DataContext = new DashboardViewModel(), }; } @@ -34,11 +31,9 @@ public partial class App : Application private void DisableAvaloniaDataAnnotationValidation() { - // Get an array of plugins to remove var dataValidationPluginsToRemove = BindingPlugins.DataValidators.OfType().ToArray(); - // remove each entry found foreach (var plugin in dataValidationPluginsToRemove) { BindingPlugins.DataValidators.Remove(plugin); diff --git a/JVDesktop/JVDesktop.csproj b/JVDesktop/JVDesktop.csproj index e103899..2940b03 100644 --- a/JVDesktop/JVDesktop.csproj +++ b/JVDesktop/JVDesktop.csproj @@ -5,24 +5,39 @@ enable true app.manifest - true + true + ..\.Temp\Debug\ + $(OutputPath) + false + false - - + + - - - - - + + + - None - All + None + All - + + + + + diff --git a/JVDesktop/Program.cs b/JVDesktop/Program.cs index 8d39a63..850598c 100644 --- a/JVDesktop/Program.cs +++ b/JVDesktop/Program.cs @@ -1,18 +1,14 @@ -using Avalonia; +using Avalonia; using System; namespace JVDesktop; sealed 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); - // Avalonia configuration, don't remove; also used by visual designer. public static AppBuilder BuildAvaloniaApp() => AppBuilder.Configure() .UsePlatformDetect() diff --git a/JVDesktop/ViewLocator.cs b/JVDesktop/ViewLocator.cs index 6015998..57507a5 100644 --- a/JVDesktop/ViewLocator.cs +++ b/JVDesktop/ViewLocator.cs @@ -25,6 +25,6 @@ public class ViewLocator : IDataTemplate public bool Match(object? data) { - return data is ViewModelBase; + return data is ViewModel; } } diff --git a/JVDesktop/ViewModels/DashboardViewModel.cs b/JVDesktop/ViewModels/DashboardViewModel.cs new file mode 100644 index 0000000..5ae7d95 --- /dev/null +++ b/JVDesktop/ViewModels/DashboardViewModel.cs @@ -0,0 +1,15 @@ +using System; +using CommunityToolkit.Mvvm.Input; + +namespace JVDesktop.ViewModels; + +public partial class DashboardViewModel : ViewModel +{ + public string Greeting => "Welcome to Avalonia!"; + + [RelayCommand] + private void ButtonClick() + { + Console.WriteLine("Button clicked"); + } +} diff --git a/JVDesktop/ViewModels/MainWindowViewModel.cs b/JVDesktop/ViewModels/MainWindowViewModel.cs deleted file mode 100644 index 4dd12b4..0000000 --- a/JVDesktop/ViewModels/MainWindowViewModel.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System; -using System.Windows.Input; -using CommunityToolkit.Mvvm.Input; - -namespace JVDesktop.ViewModels; - -public class MainWindowViewModel : ViewModelBase -{ - public string Greeting => "Welcome to Avalonia!"; - - public ICommand ButtonClickCommand { get; } = new RelayCommand(() => - { - Console.WriteLine("Button clicked"); - }); -} diff --git a/JVDesktop/ViewModels/ViewModel.cs b/JVDesktop/ViewModels/ViewModel.cs new file mode 100644 index 0000000..c1c5055 --- /dev/null +++ b/JVDesktop/ViewModels/ViewModel.cs @@ -0,0 +1,7 @@ +using CommunityToolkit.Mvvm.ComponentModel; + +namespace JVDesktop.ViewModels; + +public class ViewModel : ObservableObject +{ +} diff --git a/JVDesktop/ViewModels/ViewModelBase.cs b/JVDesktop/ViewModels/ViewModelBase.cs deleted file mode 100644 index bd3dbd8..0000000 --- a/JVDesktop/ViewModels/ViewModelBase.cs +++ /dev/null @@ -1,7 +0,0 @@ -using CommunityToolkit.Mvvm.ComponentModel; - -namespace JVDesktop.ViewModels; - -public class ViewModelBase : ObservableObject -{ -} diff --git a/JVDesktop/Views/DashboardView.axaml b/JVDesktop/Views/DashboardView.axaml new file mode 100644 index 0000000..553754f --- /dev/null +++ b/JVDesktop/Views/DashboardView.axaml @@ -0,0 +1,63 @@ + + + + + + + + + + + + + + + + + +