From 427d18df4cecce87d72787c16aa9f74bf674016c Mon Sep 17 00:00:00 2001 From: ww-rm Date: Thu, 19 Jun 2025 23:19:04 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=A5=E4=BD=9C=E5=8C=BA=E4=BF=9D=E5=AD=98?= =?UTF-8?q?=E5=8F=82=E6=95=B0=E5=A2=9E=E5=8A=A0=E6=B5=8F=E8=A7=88=E8=B7=AF?= =?UTF-8?q?=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SpineViewer/Models/WorkspaceModel.cs | 1 + .../MainWindow/ExplorerListViewModel.cs | 26 ++++++++++++------- .../MainWindow/MainWindowViewModel.cs | 2 ++ 3 files changed, 19 insertions(+), 10 deletions(-) diff --git a/SpineViewer/Models/WorkspaceModel.cs b/SpineViewer/Models/WorkspaceModel.cs index 2a42630..534d13e 100644 --- a/SpineViewer/Models/WorkspaceModel.cs +++ b/SpineViewer/Models/WorkspaceModel.cs @@ -12,6 +12,7 @@ namespace SpineViewer.Models { public class WorkspaceModel { + public string? ExploringDirectory { get; set; } public RendererWorkspaceConfigModel RendererConfig { get; set; } = new(); public List LoadedSpineObjects { get; set; } = []; } diff --git a/SpineViewer/ViewModels/MainWindow/ExplorerListViewModel.cs b/SpineViewer/ViewModels/MainWindow/ExplorerListViewModel.cs index 6992cf0..2eccb6c 100644 --- a/SpineViewer/ViewModels/MainWindow/ExplorerListViewModel.cs +++ b/SpineViewer/ViewModels/MainWindow/ExplorerListViewModel.cs @@ -39,11 +39,6 @@ namespace SpineViewer.ViewModels.MainWindow private readonly MainWindowViewModel _vmMain; - /// - /// 当前目录路径 - /// - private string? _currentDirectory; - /// /// 当前目录下文件项缓存 /// @@ -54,12 +49,26 @@ namespace SpineViewer.ViewModels.MainWindow _vmMain = vmMain; } + /// + /// 当前目录路径 + /// + public string? CurrentDirectory + { + get => string.IsNullOrWhiteSpace(_currentDirectory) ? null : _currentDirectory; + set + { + if (!SetProperty(ref _currentDirectory, value)) return; + RefreshItems(); + } + } + private string? _currentDirectory; + /// /// 筛选字符串 /// public string? FilterString { - get => _filterString; + get => string.IsNullOrWhiteSpace(_filterString) ? null : _filterString; set { if (!SetProperty(ref _filterString, value)) return; @@ -95,10 +104,7 @@ namespace SpineViewer.ViewModels.MainWindow public RelayCommand Cmd_ChangeCurrentDirectory => _cmd_ChangeCurrentDirectory ??= new(() => { if (DialogService.ShowOpenFolderDialog(out var selectedPath)) - { - _currentDirectory = selectedPath; - RefreshItems(); - } + CurrentDirectory = selectedPath; }); private RelayCommand? _cmd_ChangeCurrentDirectory; diff --git a/SpineViewer/ViewModels/MainWindow/MainWindowViewModel.cs b/SpineViewer/ViewModels/MainWindow/MainWindowViewModel.cs index e5155ed..31bc195 100644 --- a/SpineViewer/ViewModels/MainWindow/MainWindowViewModel.cs +++ b/SpineViewer/ViewModels/MainWindow/MainWindowViewModel.cs @@ -118,12 +118,14 @@ namespace SpineViewer.ViewModels.MainWindow { return new() { + ExploringDirectory = _explorerListViewModel.CurrentDirectory, RendererConfig = _sfmlRendererViewModel.WorkspaceConfig, LoadedSpineObjects = _spineObjectListViewModel.LoadedSpineObjects }; } set { + _explorerListViewModel.CurrentDirectory = value.ExploringDirectory; _sfmlRendererViewModel.WorkspaceConfig = value.RendererConfig; _spineObjectListViewModel.LoadedSpineObjects = value.LoadedSpineObjects; }