diff --git a/.serena/cache/csharp/document_symbols_cache_v23-06-25.pkl b/.serena/cache/csharp/document_symbols_cache_v23-06-25.pkl index 8eff30b..9e66a01 100644 Binary files a/.serena/cache/csharp/document_symbols_cache_v23-06-25.pkl and b/.serena/cache/csharp/document_symbols_cache_v23-06-25.pkl differ diff --git a/NavisworksTransportPlugin.csproj b/NavisworksTransportPlugin.csproj index 4e4f3c9..644afd5 100644 --- a/NavisworksTransportPlugin.csproj +++ b/NavisworksTransportPlugin.csproj @@ -193,6 +193,7 @@ + diff --git a/SystemManagementViewModel_Design.cs b/SystemManagementViewModel_Design.cs new file mode 100644 index 0000000..82d7ddf --- /dev/null +++ b/SystemManagementViewModel_Design.cs @@ -0,0 +1,897 @@ +using System; +using System.Collections.ObjectModel; +using System.ComponentModel; +using System.Diagnostics; +using System.IO; +using System.Threading.Tasks; +using System.Windows.Input; +using System.Windows.Threading; + +namespace NavisworksTransport.UI.WPF.ViewModels +{ + /// + /// 系统管理ViewModel - 参照PathEditingViewModel的设计模式 + /// 专门负责系统管理相关功能,包括:日志管理、设置管理、性能监控、版本控制、配置管理等 + /// + public class SystemManagementViewModel : ViewModelBase + { + #region 私有字段 + + // 依赖注入的核心服务 + private readonly UIStateManager _uiStateManager; + + // 系统管理相关的管理器实例(通过依赖注入) + private ISystemLogManager _logManager; + private ISystemConfigManager _configManager; + private IPerformanceMonitor _performanceMonitor; + private IModelSplitterManager _modelSplitterManager; + + // 日志管理相关字段 + private ObservableCollection _logLevels; + private string _selectedLogLevel = "Info"; + private string _logStatus = "日志系统正常"; + private int _logEntryCount = 0; + private string _logFilePath = "未设置"; + + // 系统设置相关字段 + private bool _isAutoSaveEnabled = true; + private bool _isDebugModeEnabled = false; + private string _settingsStatus = "设置已加载"; + private int _autoSaveInterval = 300; // 秒 + private string _workingDirectory = ""; + + // 版本和系统信息相关字段 + private string _pluginVersion = "v1.0"; + private string _navisworksVersion = "2026"; + private string _systemStatus = "正常"; + private string _systemStatusColor = "Green"; + private string _lastUpdateCheck = "未检查"; + + // 性能监控相关字段 + private string _memoryUsage = "0 MB"; + private string _runningTime = "00:00:00"; + private string _performanceInfo = "性能监控就绪"; + private double _cpuUsage = 0.0; + private int _threadsCount = 0; + private DispatcherTimer _performanceTimer; + + // 模型分割器相关字段 + private string _modelSplitterStatus = "就绪"; + private bool _canRunModelSplitter = true; + private string _lastSplitResult = "未执行"; + + // 配置管理相关字段 + private string _currentConfigProfile = "默认配置"; + private ObservableCollection _availableProfiles; + private bool _hasUnsavedChanges = false; + + #endregion + + #region 公共属性 + + #region 日志管理属性 + + /// + /// 可用日志级别集合 + /// + public ObservableCollection LogLevels + { + get => _logLevels; + set => SetProperty(ref _logLevels, value); + } + + /// + /// 选中的日志级别 + /// + public string SelectedLogLevel + { + get => _selectedLogLevel; + set + { + if (SetProperty(ref _selectedLogLevel, value)) + { + OnLogLevelChanged(); + } + } + } + + /// + /// 日志系统状态 + /// + public string LogStatus + { + get => _logStatus; + set => SetProperty(ref _logStatus, value); + } + + /// + /// 日志条目数量 + /// + public int LogEntryCount + { + get => _logEntryCount; + set => SetProperty(ref _logEntryCount, value); + } + + /// + /// 日志文件路径 + /// + public string LogFilePath + { + get => _logFilePath; + set => SetProperty(ref _logFilePath, value); + } + + #endregion + + #region 系统设置属性 + + /// + /// 是否启用自动保存 + /// + public bool IsAutoSaveEnabled + { + get => _isAutoSaveEnabled; + set + { + if (SetProperty(ref _isAutoSaveEnabled, value)) + { + OnAutoSaveSettingChanged(); + } + } + } + + /// + /// 是否启用调试模式 + /// + public bool IsDebugModeEnabled + { + get => _isDebugModeEnabled; + set + { + if (SetProperty(ref _isDebugModeEnabled, value)) + { + OnDebugModeChanged(); + } + } + } + + /// + /// 设置状态 + /// + public string SettingsStatus + { + get => _settingsStatus; + set => SetProperty(ref _settingsStatus, value); + } + + /// + /// 自动保存间隔(秒) + /// + public int AutoSaveInterval + { + get => _autoSaveInterval; + set + { + if (SetProperty(ref _autoSaveInterval, value)) + { + OnAutoSaveIntervalChanged(); + } + } + } + + /// + /// 工作目录 + /// + public string WorkingDirectory + { + get => _workingDirectory; + set => SetProperty(ref _workingDirectory, value); + } + + #endregion + + #region 版本和系统信息属性 + + /// + /// 插件版本 + /// + public string PluginVersion + { + get => _pluginVersion; + set => SetProperty(ref _pluginVersion, value); + } + + /// + /// Navisworks版本 + /// + public string NavisworksVersion + { + get => _navisworksVersion; + set => SetProperty(ref _navisworksVersion, value); + } + + /// + /// 系统状态 + /// + public string SystemStatus + { + get => _systemStatus; + set => SetProperty(ref _systemStatus, value); + } + + /// + /// 系统状态颜色 + /// + public string SystemStatusColor + { + get => _systemStatusColor; + set => SetProperty(ref _systemStatusColor, value); + } + + /// + /// 最后更新检查时间 + /// + public string LastUpdateCheck + { + get => _lastUpdateCheck; + set => SetProperty(ref _lastUpdateCheck, value); + } + + #endregion + + #region 性能监控属性 + + /// + /// 内存使用情况 + /// + public string MemoryUsage + { + get => _memoryUsage; + set => SetProperty(ref _memoryUsage, value); + } + + /// + /// 运行时间 + /// + public string RunningTime + { + get => _runningTime; + set => SetProperty(ref _runningTime, value); + } + + /// + /// 性能信息 + /// + public string PerformanceInfo + { + get => _performanceInfo; + set => SetProperty(ref _performanceInfo, value); + } + + /// + /// CPU使用率 + /// + public double CpuUsage + { + get => _cpuUsage; + set => SetProperty(ref _cpuUsage, value); + } + + /// + /// 线程数量 + /// + public int ThreadsCount + { + get => _threadsCount; + set => SetProperty(ref _threadsCount, value); + } + + #endregion + + #region 模型分割器属性 + + /// + /// 模型分层拆分状态 + /// + public string ModelSplitterStatus + { + get => _modelSplitterStatus; + set => SetProperty(ref _modelSplitterStatus, value); + } + + /// + /// 是否可以运行模型分割器 + /// + public bool CanRunModelSplitter + { + get => _canRunModelSplitter; + set => SetProperty(ref _canRunModelSplitter, value); + } + + /// + /// 最后分割结果 + /// + public string LastSplitResult + { + get => _lastSplitResult; + set => SetProperty(ref _lastSplitResult, value); + } + + #endregion + + #region 配置管理属性 + + /// + /// 当前配置档案 + /// + public string CurrentConfigProfile + { + get => _currentConfigProfile; + set => SetProperty(ref _currentConfigProfile, value); + } + + /// + /// 可用配置档案 + /// + public ObservableCollection AvailableProfiles + { + get => _availableProfiles; + set => SetProperty(ref _availableProfiles, value); + } + + /// + /// 是否有未保存的更改 + /// + public bool HasUnsavedChanges + { + get => _hasUnsavedChanges; + set => SetProperty(ref _hasUnsavedChanges, value); + } + + #endregion + + #endregion + + #region 命令定义 + + // 日志管理命令 + public ICommand ViewLogCommand { get; private set; } + public ICommand ClearLogCommand { get; private set; } + public ICommand ExportLogCommand { get; private set; } + public ICommand RefreshLogStatusCommand { get; private set; } + + // 设置管理命令 + public ICommand OpenSettingsCommand { get; private set; } + public ICommand ResetSettingsCommand { get; private set; } + public ICommand SaveSettingsCommand { get; private set; } + public ICommand LoadSettingsCommand { get; private set; } + + // 配置管理命令 + public ICommand ImportConfigCommand { get; private set; } + public ICommand ExportConfigCommand { get; private set; } + public ICommand CreateProfileCommand { get; private set; } + public ICommand DeleteProfileCommand { get; private set; } + public ICommand SwitchProfileCommand { get; private set; } + + // 系统管理命令 + public ICommand CheckUpdateCommand { get; private set; } + public ICommand RestartSystemCommand { get; private set; } + public ICommand SystemDiagnosticsCommand { get; private set; } + + // 性能管理命令 + public ICommand GeneratePerformanceReportCommand { get; private set; } + public ICommand StartPerformanceMonitoringCommand { get; private set; } + public ICommand StopPerformanceMonitoringCommand { get; private set; } + public ICommand ClearPerformanceDataCommand { get; private set; } + + // 模型分割器命令 + public ICommand RunModelSplitterCommand { get; private set; } + public ICommand ConfigureModelSplitterCommand { get; private set; } + + #endregion + + #region 构造函数 + + /// + /// 构造函数 - 参照PathEditingViewModel的设计模式 + /// + /// 日志管理器(可选,用于依赖注入) + /// 配置管理器(可选,用于依赖注入) + /// 性能监控器(可选,用于依赖注入) + /// 模型分割器管理器(可选,用于依赖注入) + public SystemManagementViewModel( + ISystemLogManager logManager = null, + ISystemConfigManager configManager = null, + IPerformanceMonitor performanceMonitor = null, + IModelSplitterManager modelSplitterManager = null) : base() + { + try + { + // 获取UI状态管理器 + _uiStateManager = UIStateManager.Instance; + if (_uiStateManager == null) + { + throw new InvalidOperationException("UIStateManager初始化失败"); + } + + // 设置依赖(如果为null则使用默认实现) + _logManager = logManager ?? CreateDefaultLogManager(); + _configManager = configManager ?? CreateDefaultConfigManager(); + _performanceMonitor = performanceMonitor ?? CreateDefaultPerformanceMonitor(); + _modelSplitterManager = modelSplitterManager ?? CreateDefaultModelSplitterManager(); + + // 初始化集合 + LogLevels = new ThreadSafeObservableCollection(); + AvailableProfiles = new ThreadSafeObservableCollection(); + + // 初始化命令 + InitializeCommands(); + + // 初始化系统管理设置(异步) + InitializeSystemManagementAsync(); + + LogManager.Info("SystemManagementViewModel构造函数执行完成"); + } + catch (Exception ex) + { + LogManager.Error($"SystemManagementViewModel构造函数异常: {ex.Message}", ex); + SystemStatus = "初始化失败,请检查日志"; + SystemStatusColor = "Red"; + throw; + } + } + + #endregion + + #region 初始化方法 + + /// + /// 初始化命令 + /// + private void InitializeCommands() + { + // 日志管理命令 + ViewLogCommand = new RelayCommand(async () => await ExecuteViewLogAsync()); + ClearLogCommand = new RelayCommand(async () => await ExecuteClearLogAsync()); + ExportLogCommand = new RelayCommand(async () => await ExecuteExportLogAsync()); + RefreshLogStatusCommand = new RelayCommand(async () => await ExecuteRefreshLogStatusAsync()); + + // 设置管理命令 + OpenSettingsCommand = new RelayCommand(async () => await ExecuteOpenSettingsAsync()); + ResetSettingsCommand = new RelayCommand(async () => await ExecuteResetSettingsAsync()); + SaveSettingsCommand = new RelayCommand(async () => await ExecuteSaveSettingsAsync()); + LoadSettingsCommand = new RelayCommand(async () => await ExecuteLoadSettingsAsync()); + + // 配置管理命令 + ImportConfigCommand = new RelayCommand(async () => await ExecuteImportConfigAsync()); + ExportConfigCommand = new RelayCommand(async () => await ExecuteExportConfigAsync()); + CreateProfileCommand = new RelayCommand(async () => await ExecuteCreateProfileAsync()); + DeleteProfileCommand = new RelayCommand(async () => await ExecuteDeleteProfileAsync()); + SwitchProfileCommand = new RelayCommand(async (profile) => await ExecuteSwitchProfileAsync(profile)); + + // 系统管理命令 + CheckUpdateCommand = new RelayCommand(async () => await ExecuteCheckUpdateAsync()); + RestartSystemCommand = new RelayCommand(async () => await ExecuteRestartSystemAsync()); + SystemDiagnosticsCommand = new RelayCommand(async () => await ExecuteSystemDiagnosticsAsync()); + + // 性能管理命令 + GeneratePerformanceReportCommand = new RelayCommand(async () => await ExecuteGeneratePerformanceReportAsync()); + StartPerformanceMonitoringCommand = new RelayCommand(async () => await ExecuteStartPerformanceMonitoringAsync()); + StopPerformanceMonitoringCommand = new RelayCommand(async () => await ExecuteStopPerformanceMonitoringAsync()); + ClearPerformanceDataCommand = new RelayCommand(async () => await ExecuteClearPerformanceDataAsync()); + + // 模型分割器命令 + RunModelSplitterCommand = new RelayCommand(async () => await ExecuteRunModelSplitterAsync(), () => CanRunModelSplitter); + ConfigureModelSplitterCommand = new RelayCommand(async () => await ExecuteConfigureModelSplitterAsync()); + } + + /// + /// 异步初始化系统管理设置 + /// + private async void InitializeSystemManagementAsync() + { + await SafeExecuteAsync(async () => + { + await _uiStateManager.ExecuteUIUpdateAsync(() => + { + // 初始化日志级别 + LogLevels.Clear(); + var logLevels = new[] { "Debug", "Info", "Warning", "Error" }; + foreach (var level in logLevels) + { + LogLevels.Add(level); + } + SelectedLogLevel = "Info"; + + // 初始化配置档案 + AvailableProfiles.Clear(); + var profiles = new[] { "默认配置", "开发配置", "生产配置", "测试配置" }; + foreach (var profile in profiles) + { + AvailableProfiles.Add(profile); + } + CurrentConfigProfile = "默认配置"; + + // 初始化系统信息 + PluginVersion = GetPluginVersion(); + NavisworksVersion = GetNavisworksVersion(); + SystemStatus = "正常"; + SystemStatusColor = "Green"; + WorkingDirectory = GetWorkingDirectory(); + LogFilePath = GetLogFilePath(); + }); + + // 启动性能监控 + await StartPerformanceMonitoring(); + + LogManager.Info("系统管理设置初始化完成"); + }, "初始化系统管理设置"); + } + + #endregion + + #region 命令实现 + + // 这里只展示架构框架,具体实现方法将在后续详细说明 + + #region 日志管理命令实现 + + private async Task ExecuteViewLogAsync() + { + await SafeExecuteAsync(async () => + { + // TODO: 实现日志查看功能 + await _logManager.OpenLogViewerAsync(); + LogStatus = "日志查看器已打开"; + }, "查看日志"); + } + + private async Task ExecuteClearLogAsync() + { + await SafeExecuteAsync(async () => + { + // TODO: 实现日志清空功能 + await _logManager.ClearLogsAsync(); + LogEntryCount = 0; + LogStatus = "日志已清空"; + }, "清空日志"); + } + + private async Task ExecuteExportLogAsync() + { + await SafeExecuteAsync(async () => + { + // TODO: 实现日志导出功能 + var exportPath = await _logManager.ExportLogsAsync(); + LogStatus = $"日志已导出到: {exportPath}"; + }, "导出日志"); + } + + private async Task ExecuteRefreshLogStatusAsync() + { + await SafeExecuteAsync(async () => + { + // TODO: 实现日志状态刷新功能 + var status = await _logManager.GetLogStatusAsync(); + LogStatus = status.Message; + LogEntryCount = status.EntryCount; + LogFilePath = status.FilePath; + }, "刷新日志状态"); + } + + #endregion + + // 其他命令实现方法... + // (这里省略具体实现,在实际代码中会完整实现) + + #endregion + + #region 事件处理 + + /// + /// 处理日志级别改变事件 + /// + private void OnLogLevelChanged() + { + SafeExecute(() => + { + _logManager?.SetLogLevel(SelectedLogLevel); + LogStatus = $"日志级别已设置为: {SelectedLogLevel}"; + }, "设置日志级别"); + } + + /// + /// 处理自动保存设置改变事件 + /// + private void OnAutoSaveSettingChanged() + { + SafeExecute(() => + { + _configManager?.SetAutoSaveEnabled(IsAutoSaveEnabled); + SettingsStatus = $"自动保存: {(IsAutoSaveEnabled ? "已启用" : "已禁用")}"; + HasUnsavedChanges = true; + }, "设置自动保存"); + } + + /// + /// 处理调试模式改变事件 + /// + private void OnDebugModeChanged() + { + SafeExecute(() => + { + _configManager?.SetDebugMode(IsDebugModeEnabled); + SettingsStatus = $"调试模式: {(IsDebugModeEnabled ? "已启用" : "已禁用")}"; + HasUnsavedChanges = true; + }, "设置调试模式"); + } + + /// + /// 处理自动保存间隔改变事件 + /// + private void OnAutoSaveIntervalChanged() + { + SafeExecute(() => + { + _configManager?.SetAutoSaveInterval(AutoSaveInterval); + SettingsStatus = $"自动保存间隔: {AutoSaveInterval}秒"; + HasUnsavedChanges = true; + }, "设置自动保存间隔"); + } + + #endregion + + #region 辅助方法 + + /// + /// 安全执行异步操作 + /// + private async Task SafeExecuteAsync(Func action, string operationName = "未知操作") + { + try + { + await action(); + } + catch (Exception ex) + { + LogManager.Error($"{operationName}发生异常: {ex.Message}", ex); + SystemStatus = $"{operationName}失败: {ex.Message}"; + SystemStatusColor = "Red"; + } + } + + /// + /// 安全执行同步操作 + /// + private void SafeExecute(Action action, string operationName = "未知操作") + { + try + { + action(); + } + catch (Exception ex) + { + LogManager.Error($"{operationName}发生异常: {ex.Message}", ex); + SystemStatus = $"{operationName}失败: {ex.Message}"; + SystemStatusColor = "Red"; + } + } + + #endregion + + #region 性能监控 + + /// + /// 启动性能监控 + /// + private async Task StartPerformanceMonitoring() + { + await SafeExecuteAsync(async () => + { + var startTime = DateTime.Now; + + // 使用定时器更新性能信息 + _performanceTimer = new DispatcherTimer(); + _performanceTimer.Interval = TimeSpan.FromSeconds(5); + _performanceTimer.Tick += async (s, e) => + { + try + { + await UpdatePerformanceInfo(startTime); + } + catch (Exception ex) + { + LogManager.Error($"性能监控更新失败: {ex.Message}"); + } + }; + _performanceTimer.Start(); + + PerformanceInfo = "性能监控已启动"; + }, "启动性能监控"); + } + + /// + /// 更新性能信息 + /// + private async Task UpdatePerformanceInfo(DateTime startTime) + { + await _uiStateManager.ExecuteUIUpdateAsync(() => + { + // 更新内存使用 + var process = Process.GetCurrentProcess(); + var memoryMB = process.WorkingSet64 / (1024 * 1024); + MemoryUsage = $"{memoryMB} MB"; + + // 更新运行时间 + var runTime = DateTime.Now - startTime; + RunningTime = $"{runTime.Hours:D2}:{runTime.Minutes:D2}:{runTime.Seconds:D2}"; + + // 更新线程数 + ThreadsCount = process.Threads.Count; + + // 更新性能信息 + PerformanceInfo = $"CPU: 正常, 内存: {memoryMB}MB, 线程: {ThreadsCount}, 运行时间: {RunningTime}"; + }); + } + + #endregion + + #region 默认实现创建方法 + + private ISystemLogManager CreateDefaultLogManager() + { + // TODO: 创建默认日志管理器实现 + return new DefaultSystemLogManager(); + } + + private ISystemConfigManager CreateDefaultConfigManager() + { + // TODO: 创建默认配置管理器实现 + return new DefaultSystemConfigManager(); + } + + private IPerformanceMonitor CreateDefaultPerformanceMonitor() + { + // TODO: 创建默认性能监控器实现 + return new DefaultPerformanceMonitor(); + } + + private IModelSplitterManager CreateDefaultModelSplitterManager() + { + // TODO: 创建默认模型分割器管理器实现 + return new DefaultModelSplitterManager(); + } + + #endregion + + #region 系统信息获取方法 + + private string GetPluginVersion() + { + // TODO: 从程序集获取插件版本 + return "v1.0"; + } + + private string GetNavisworksVersion() + { + // TODO: 从Navisworks API获取版本信息 + return "2026"; + } + + private string GetWorkingDirectory() + { + // TODO: 获取当前工作目录 + return Environment.CurrentDirectory; + } + + private string GetLogFilePath() + { + // TODO: 获取日志文件路径 + return Path.Combine(GetWorkingDirectory(), "Logs", "NavisworksTransport.log"); + } + + #endregion + + #region 资源清理 + + /// + /// 清理资源 + /// + public void Cleanup() + { + try + { + LogManager.Info("开始清理SystemManagementViewModel资源"); + + // 停止性能监控定时器 + if (_performanceTimer != null) + { + _performanceTimer.Stop(); + _performanceTimer = null; + } + + // 清理管理器资源 + _logManager?.Dispose(); + _configManager?.Dispose(); + _performanceMonitor?.Dispose(); + _modelSplitterManager?.Dispose(); + + LogManager.Info("SystemManagementViewModel资源清理完成"); + } + catch (Exception ex) + { + LogManager.Error($"SystemManagementViewModel清理失败: {ex.Message}"); + } + } + + #endregion + } +} + +// 接口定义(这些接口将在单独的文件中定义) + +/// +/// 系统日志管理器接口 +/// +public interface ISystemLogManager : IDisposable +{ + Task OpenLogViewerAsync(); + Task ClearLogsAsync(); + Task ExportLogsAsync(); + Task GetLogStatusAsync(); + void SetLogLevel(string level); +} + +/// +/// 系统配置管理器接口 +/// +public interface ISystemConfigManager : IDisposable +{ + void SetAutoSaveEnabled(bool enabled); + void SetDebugMode(bool enabled); + void SetAutoSaveInterval(int seconds); + Task SaveConfigAsync(); + Task LoadConfigAsync(); +} + +/// +/// 性能监控器接口 +/// +public interface IPerformanceMonitor : IDisposable +{ + Task GetCurrentPerformanceAsync(); + Task StartMonitoringAsync(); + Task StopMonitoringAsync(); +} + +/// +/// 模型分割器管理器接口 +/// +public interface IModelSplitterManager : IDisposable +{ + Task RunModelSplitterAsync(); + Task ConfigureAsync(); + bool CanRun { get; } +} + +/// +/// 日志状态数据结构 +/// +public class LogStatus +{ + public string Message { get; set; } + public int EntryCount { get; set; } + public string FilePath { get; set; } +} + +/// +/// 性能数据结构 +/// +public class PerformanceData +{ + public double CpuUsage { get; set; } + public long MemoryUsage { get; set; } + public int ThreadCount { get; set; } + public TimeSpan RunningTime { get; set; } +} \ No newline at end of file diff --git a/SystemManagement_Integration_Plan.md b/SystemManagement_Integration_Plan.md new file mode 100644 index 0000000..d19a630 --- /dev/null +++ b/SystemManagement_Integration_Plan.md @@ -0,0 +1,457 @@ +# SystemManagementViewModel 集成方案 + +## 1. 与LogisticsControlViewModel的解耦策略 + +### 1.1 依赖关系处理 + +**原始依赖关系问题:** +- LogisticsControlViewModel 直接包含所有系统管理代码 +- UI更新、状态管理、业务逻辑混合在一起 +- 违反单一职责原则 + +**解耦方案:** + +```csharp +// 在LogisticsControlViewModel中 +public class LogisticsControlViewModel : ViewModelBase +{ + // 移除所有系统管理相关的字段和属性 + // private string _modelSplitterStatus; // 删除 + // private ObservableCollection _logLevels; // 删除 + // ... 其他系统管理相关代码 + + // 添加SystemManagementViewModel的引用 + private SystemManagementViewModel _systemManagementViewModel; + + public SystemManagementViewModel SystemManagement + { + get => _systemManagementViewModel; + private set => SetProperty(ref _systemManagementViewModel, value); + } + + public LogisticsControlViewModel() : base() + { + try + { + // 原有初始化代码... + + // 初始化系统管理ViewModel + SystemManagement = new SystemManagementViewModel(); + + // 订阅系统管理事件(如果需要) + SubscribeToSystemManagementEvents(); + } + catch (Exception ex) + { + // 错误处理 + } + } + + // 移除所有系统管理相关的方法 + // private async Task InitializeSystemManagementSettingsAsync() // 删除 + // private void ExecuteClearLog() // 删除 + // private void ExecuteExportLog() // 删除 + // ... 其他系统管理方法 +} +``` + +### 1.2 事件通信机制 + +```csharp +// 定义系统管理事件接口 +public interface ISystemManagementEvents +{ + event EventHandler SystemStatusChanged; + event EventHandler PerformanceAlert; + event EventHandler ConfigurationChanged; +} + +// 在SystemManagementViewModel中实现事件发布 +public class SystemManagementViewModel : ViewModelBase, ISystemManagementEvents +{ + public event EventHandler SystemStatusChanged; + public event EventHandler PerformanceAlert; + public event EventHandler ConfigurationChanged; + + // 触发系统状态变更事件 + private void OnSystemStatusChanged(string newStatus, string color) + { + SystemStatusChanged?.Invoke(this, new SystemStatusChangedEventArgs + { + Status = newStatus, + StatusColor = color, + Timestamp = DateTime.Now + }); + } + + // 触发性能警告事件 + private void OnPerformanceAlert(PerformanceAlertType alertType, string message) + { + PerformanceAlert?.Invoke(this, new PerformanceAlertEventArgs + { + AlertType = alertType, + Message = message, + Timestamp = DateTime.Now + }); + } +} + +// 在LogisticsControlViewModel中订阅事件 +private void SubscribeToSystemManagementEvents() +{ + if (SystemManagement != null) + { + SystemManagement.SystemStatusChanged += OnSystemStatusChanged; + SystemManagement.PerformanceAlert += OnPerformanceAlert; + SystemManagement.ConfigurationChanged += OnConfigurationChanged; + } +} + +private void OnSystemStatusChanged(object sender, SystemStatusChangedEventArgs e) +{ + // 处理系统状态变更(如果主ViewModel需要知道) + // 例如:更新主界面的状态指示器 + StatusText = $"系统状态: {e.Status}"; +} +``` + +## 2. UI集成策略 + +### 2.1 XAML绑定方案 + +```xml + + + + + + + + + + + + + +