# 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