From 090d1d93f510ac1293b26ba5955bc8a30fa7c2ce Mon Sep 17 00:00:00 2001 From: Easley Date: Thu, 3 Apr 2025 11:51:27 +0800 Subject: [PATCH 1/2] sample update : merge viewmodel --- ...uleNavigation.Sample.DesktopHosting.csproj | 1 + .../Program.cs | 1 + .../AppWithDI.axaml.cs | 1 + .../Lemon.ModuleNavigation.Sample.csproj | 1 + .../ModuleAs/ViewModelA.cs | 2 +- .../ModuleBs/ViewModelB.cs | 2 +- .../ModuleCs/ViewModelC.cs | 2 +- .../ModuleCs/ViewModels/SubViewModel01.cs | 2 +- .../ModuleCs/ViewModels/SubViewModel02.cs | 2 +- .../ViewModels/BaseNavigationViewModel.cs | 56 ------- .../ViewModels/MainViewModel.cs | 1 - .../ViewModels/ViewAlphaViewModel.cs | 48 ------ .../ViewModels/ViewBetaViewModel.cs | 48 ------ .../Views/MainView.axaml | 156 ++++++++---------- .../BaseNavigationViewModel.cs | 2 +- ...on.ModuleNavigation.SampleViewModel.csproj | 17 ++ .../MainWindowViewModel.cs | 2 +- .../ViewAlphaViewModel.cs | 2 +- .../ViewBetaViewModel.cs | 2 +- .../App.xaml.cs | 2 +- .../Lemon.ModuleNavigation.WpfSample.csproj | 1 + src/Lemon.ModuleNavigation.sln | 6 + 22 files changed, 108 insertions(+), 249 deletions(-) delete mode 100644 src/Lemon.ModuleNavigation.Sample/ViewModels/BaseNavigationViewModel.cs delete mode 100644 src/Lemon.ModuleNavigation.Sample/ViewModels/ViewAlphaViewModel.cs delete mode 100644 src/Lemon.ModuleNavigation.Sample/ViewModels/ViewBetaViewModel.cs rename src/{Lemon.ModuleNavigation.WpfSample => Lemon.ModuleNavigation.SampleViewModel}/BaseNavigationViewModel.cs (95%) create mode 100644 src/Lemon.ModuleNavigation.SampleViewModel/Lemon.ModuleNavigation.SampleViewModel.csproj rename src/{Lemon.ModuleNavigation.WpfSample => Lemon.ModuleNavigation.SampleViewModel}/MainWindowViewModel.cs (98%) rename src/{Lemon.ModuleNavigation.WpfSample/ViewModels => Lemon.ModuleNavigation.SampleViewModel}/ViewAlphaViewModel.cs (96%) rename src/{Lemon.ModuleNavigation.WpfSample/ViewModels => Lemon.ModuleNavigation.SampleViewModel}/ViewBetaViewModel.cs (95%) diff --git a/src/Lemon.ModuleNavigation.Sample.DesktopHosting/Lemon.ModuleNavigation.Sample.DesktopHosting.csproj b/src/Lemon.ModuleNavigation.Sample.DesktopHosting/Lemon.ModuleNavigation.Sample.DesktopHosting.csproj index b15ad34..2be3b63 100644 --- a/src/Lemon.ModuleNavigation.Sample.DesktopHosting/Lemon.ModuleNavigation.Sample.DesktopHosting.csproj +++ b/src/Lemon.ModuleNavigation.Sample.DesktopHosting/Lemon.ModuleNavigation.Sample.DesktopHosting.csproj @@ -21,6 +21,7 @@ + diff --git a/src/Lemon.ModuleNavigation.Sample.DesktopHosting/Program.cs b/src/Lemon.ModuleNavigation.Sample.DesktopHosting/Program.cs index c25bf43..fd50214 100644 --- a/src/Lemon.ModuleNavigation.Sample.DesktopHosting/Program.cs +++ b/src/Lemon.ModuleNavigation.Sample.DesktopHosting/Program.cs @@ -6,6 +6,7 @@ using Lemon.ModuleNavigation.Sample.ModuleCs; using Lemon.ModuleNavigation.Sample.ViewModels; using Lemon.ModuleNavigation.Sample.Views; +using Lemon.ModuleNavigation.SampleViewModel; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; diff --git a/src/Lemon.ModuleNavigation.Sample/AppWithDI.axaml.cs b/src/Lemon.ModuleNavigation.Sample/AppWithDI.axaml.cs index 29eb782..3f82930 100644 --- a/src/Lemon.ModuleNavigation.Sample/AppWithDI.axaml.cs +++ b/src/Lemon.ModuleNavigation.Sample/AppWithDI.axaml.cs @@ -6,6 +6,7 @@ using Lemon.ModuleNavigation.Sample.ModuleCs; using Lemon.ModuleNavigation.Sample.ViewModels; using Lemon.ModuleNavigation.Sample.Views; +using Lemon.ModuleNavigation.SampleViewModel; using Microsoft.Extensions.DependencyInjection; using System; diff --git a/src/Lemon.ModuleNavigation.Sample/Lemon.ModuleNavigation.Sample.csproj b/src/Lemon.ModuleNavigation.Sample/Lemon.ModuleNavigation.Sample.csproj index f323864..61d4f05 100644 --- a/src/Lemon.ModuleNavigation.Sample/Lemon.ModuleNavigation.Sample.csproj +++ b/src/Lemon.ModuleNavigation.Sample/Lemon.ModuleNavigation.Sample.csproj @@ -33,6 +33,7 @@ + diff --git a/src/Lemon.ModuleNavigation.Sample/ModuleAs/ViewModelA.cs b/src/Lemon.ModuleNavigation.Sample/ModuleAs/ViewModelA.cs index 08513b2..e0fa95a 100644 --- a/src/Lemon.ModuleNavigation.Sample/ModuleAs/ViewModelA.cs +++ b/src/Lemon.ModuleNavigation.Sample/ModuleAs/ViewModelA.cs @@ -1,5 +1,5 @@ using Lemon.ModuleNavigation.Abstractions; -using Lemon.ModuleNavigation.Sample.ViewModels; +using Lemon.ModuleNavigation.SampleViewModel; using ReactiveUI; using System.Reactive; diff --git a/src/Lemon.ModuleNavigation.Sample/ModuleBs/ViewModelB.cs b/src/Lemon.ModuleNavigation.Sample/ModuleBs/ViewModelB.cs index ca58f6a..4b28172 100644 --- a/src/Lemon.ModuleNavigation.Sample/ModuleBs/ViewModelB.cs +++ b/src/Lemon.ModuleNavigation.Sample/ModuleBs/ViewModelB.cs @@ -1,5 +1,5 @@ using Lemon.ModuleNavigation.Abstractions; -using Lemon.ModuleNavigation.Sample.ViewModels; +using Lemon.ModuleNavigation.SampleViewModel; using ReactiveUI; using System.Reactive; diff --git a/src/Lemon.ModuleNavigation.Sample/ModuleCs/ViewModelC.cs b/src/Lemon.ModuleNavigation.Sample/ModuleCs/ViewModelC.cs index a66c653..d7f3217 100644 --- a/src/Lemon.ModuleNavigation.Sample/ModuleCs/ViewModelC.cs +++ b/src/Lemon.ModuleNavigation.Sample/ModuleCs/ViewModelC.cs @@ -1,5 +1,5 @@ using Lemon.ModuleNavigation.Abstractions; -using Lemon.ModuleNavigation.Sample.ViewModels; +using Lemon.ModuleNavigation.SampleViewModel; using ReactiveUI; using System; using System.Reactive; diff --git a/src/Lemon.ModuleNavigation.Sample/ModuleCs/ViewModels/SubViewModel01.cs b/src/Lemon.ModuleNavigation.Sample/ModuleCs/ViewModels/SubViewModel01.cs index 07e14c0..208a83d 100644 --- a/src/Lemon.ModuleNavigation.Sample/ModuleCs/ViewModels/SubViewModel01.cs +++ b/src/Lemon.ModuleNavigation.Sample/ModuleCs/ViewModels/SubViewModel01.cs @@ -1,5 +1,5 @@ using Lemon.ModuleNavigation.Abstractions; -using Lemon.ModuleNavigation.Sample.ViewModels; +using Lemon.ModuleNavigation.SampleViewModel; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using System; diff --git a/src/Lemon.ModuleNavigation.Sample/ModuleCs/ViewModels/SubViewModel02.cs b/src/Lemon.ModuleNavigation.Sample/ModuleCs/ViewModels/SubViewModel02.cs index 309c335..84e695d 100644 --- a/src/Lemon.ModuleNavigation.Sample/ModuleCs/ViewModels/SubViewModel02.cs +++ b/src/Lemon.ModuleNavigation.Sample/ModuleCs/ViewModels/SubViewModel02.cs @@ -1,5 +1,5 @@ using Lemon.ModuleNavigation.Abstractions; -using Lemon.ModuleNavigation.Sample.ViewModels; +using Lemon.ModuleNavigation.SampleViewModel; using System; namespace Lemon.ModuleNavigation.Sample.ModuleCs.ViewModels; diff --git a/src/Lemon.ModuleNavigation.Sample/ViewModels/BaseNavigationViewModel.cs b/src/Lemon.ModuleNavigation.Sample/ViewModels/BaseNavigationViewModel.cs deleted file mode 100644 index 4eb964d..0000000 --- a/src/Lemon.ModuleNavigation.Sample/ViewModels/BaseNavigationViewModel.cs +++ /dev/null @@ -1,56 +0,0 @@ -using Lemon.ModuleNavigation.Abstractions; -using ReactiveUI; -using System; -using System.Diagnostics; -using System.Reactive; - -namespace Lemon.ModuleNavigation.Sample.ViewModels; - -public class BaseNavigationViewModel : ReactiveObject, INavigationAware, IDisposable -{ - public virtual string Greeting => $"Welcome to {GetType().Name}[{Environment.ProcessId}][{Environment.CurrentManagedThreadId}]{Environment.NewLine}{DateTime.Now:yyyy-MM-dd HH-mm-ss.ffff}"; - - - public BaseNavigationViewModel() - { - UnloadViewCommand = ReactiveCommand.Create(() => - { - var code = this.GetHashCode(); - Debug.WriteLine(code); - RequestUnload?.Invoke(); - }); - } - public ReactiveCommand UnloadViewCommand - { - get; - } - - public event Action? RequestUnload; - - public virtual void Dispose() - { - - } - - public virtual bool IsNavigationTarget(NavigationContext navigationContext) - { - if (navigationContext.Parameters is not null) - { - if (navigationContext.Parameters.TryGetValue("requestNew", out bool requestNew)) - { - return !requestNew; - } - } - return true; - } - - public virtual void OnNavigatedFrom(NavigationContext navigationContext) - { - - } - - public virtual void OnNavigatedTo(NavigationContext navigationContext) - { - - } -} diff --git a/src/Lemon.ModuleNavigation.Sample/ViewModels/MainViewModel.cs b/src/Lemon.ModuleNavigation.Sample/ViewModels/MainViewModel.cs index f29c86b..d8de702 100644 --- a/src/Lemon.ModuleNavigation.Sample/ViewModels/MainViewModel.cs +++ b/src/Lemon.ModuleNavigation.Sample/ViewModels/MainViewModel.cs @@ -41,7 +41,6 @@ public MainViewModel(IEnumerable modules, { viewName = content.Replace(".RequestNew",string.Empty); requestNew = true; - } _navigationService.RequestViewNavigation("ContentRegion", viewName, diff --git a/src/Lemon.ModuleNavigation.Sample/ViewModels/ViewAlphaViewModel.cs b/src/Lemon.ModuleNavigation.Sample/ViewModels/ViewAlphaViewModel.cs deleted file mode 100644 index 7ea4585..0000000 --- a/src/Lemon.ModuleNavigation.Sample/ViewModels/ViewAlphaViewModel.cs +++ /dev/null @@ -1,48 +0,0 @@ -using Lemon.ModuleNavigation.Abstractions; -using Lemon.ModuleNavigation.Core; -using Microsoft.Extensions.Logging; -using ReactiveUI; -using System; -using System.Reactive; - -namespace Lemon.ModuleNavigation.Sample.ViewModels; - -public class ViewAlphaViewModel : BaseNavigationViewModel, IDialogAware -{ - private readonly ILogger _logger; - public ViewAlphaViewModel(ILogger logger) - { - _logger = logger; - CloseCommand = ReactiveCommand.Create(() => - { - var param = new DialogParameters - { - { "from", nameof(ViewAlphaViewModel) } - }; - RequestClose?.Invoke(new DialogResult(ButtonResult.OK, param)); - }); - } - private bool _isDialog = false; - public bool IsDialog - { - get => _isDialog; - set - { - this.RaiseAndSetIfChanged(ref _isDialog, value); - } - } - public ReactiveCommand CloseCommand { get; } - public string Title => nameof(ViewAlphaViewModel); - public event Action? RequestClose; - - public void OnDialogClosed() - { - _logger.LogInformation("OnDialogClosed"); - } - - public void OnDialogOpened(IDialogParameters? parameters) - { - _logger.LogInformation($"OnDialogOpened:{parameters?.ToString()}"); - IsDialog = true; - } -} diff --git a/src/Lemon.ModuleNavigation.Sample/ViewModels/ViewBetaViewModel.cs b/src/Lemon.ModuleNavigation.Sample/ViewModels/ViewBetaViewModel.cs deleted file mode 100644 index b0c30e7..0000000 --- a/src/Lemon.ModuleNavigation.Sample/ViewModels/ViewBetaViewModel.cs +++ /dev/null @@ -1,48 +0,0 @@ -using Lemon.ModuleNavigation.Abstractions; -using Lemon.ModuleNavigation.Core; -using Microsoft.Extensions.Logging; -using ReactiveUI; -using System; -using System.Reactive; - -namespace Lemon.ModuleNavigation.Sample.ViewModels; - -public class ViewBetaViewModel : BaseNavigationViewModel, IDialogAware -{ - private readonly ILogger _logger; - public ViewBetaViewModel(ILogger logger) - { - _logger = logger; - CloseCommand = ReactiveCommand.Create(() => - { - var param = new DialogParameters - { - { "from", nameof(ViewAlphaViewModel) } - }; - RequestClose?.Invoke(new DialogResult(ButtonResult.OK, param)); - }); - } - private bool _isDialog = false; - public bool IsDialog - { - get => _isDialog; - set - { - this.RaiseAndSetIfChanged(ref _isDialog, value); - } - } - public ReactiveCommand CloseCommand { get; } - public string Title => nameof(ViewAlphaViewModel); - public event Action? RequestClose; - - public void OnDialogClosed() - { - _logger.LogInformation("OnDialogClosed"); - } - - public void OnDialogOpened(IDialogParameters? parameters) - { - _logger.LogInformation($"OnDialogOpened:{parameters?.ToString()}"); - IsDialog = true; - } -} diff --git a/src/Lemon.ModuleNavigation.Sample/Views/MainView.axaml b/src/Lemon.ModuleNavigation.Sample/Views/MainView.axaml index 052df74..03b760a 100644 --- a/src/Lemon.ModuleNavigation.Sample/Views/MainView.axaml +++ b/src/Lemon.ModuleNavigation.Sample/Views/MainView.axaml @@ -51,77 +51,6 @@ - - - - - - - -