diff --git a/XplorePlane/ViewModels/Main/MainViewModel.cs b/XplorePlane/ViewModels/Main/MainViewModel.cs index 1ac944f..b6ff57e 100644 --- a/XplorePlane/ViewModels/Main/MainViewModel.cs +++ b/XplorePlane/ViewModels/Main/MainViewModel.cs @@ -65,6 +65,7 @@ namespace XplorePlane.ViewModels public DelegateCommand OpenLibraryVersionsCommand { get; } public DelegateCommand OpenUserManualCommand { get; } public DelegateCommand OpenCameraSettingsCommand { get; } + public DelegateCommand OpenSettingsCommand { get; } public DelegateCommand NewCncProgramCommand { get; } public DelegateCommand SaveCncProgramCommand { get; } public DelegateCommand LoadCncProgramCommand { get; } @@ -145,6 +146,7 @@ namespace XplorePlane.ViewModels private Window _detectorConfigWindow; private Window _plcAddrConfigWindow; private Window _realTimeLogViewerWindow; + private Window _settingsWindow; private Window _toolboxWindow; private Window _raySourceConfigWindow; private object _imagePanelContent; @@ -212,6 +214,7 @@ namespace XplorePlane.ViewModels OpenLibraryVersionsCommand = new DelegateCommand(() => ShowWindow(new Views.LibraryVersionsWindow(), "关于")); OpenUserManualCommand = new DelegateCommand(ExecuteOpenUserManual); OpenCameraSettingsCommand = new DelegateCommand(ExecuteOpenCameraSettings); + OpenSettingsCommand = new DelegateCommand(ExecuteOpenSettings); NewCncProgramCommand = new DelegateCommand(() => ExecuteCncEditorAction(vm => vm.NewProgramCommand.Execute())); SaveCncProgramCommand = new DelegateCommand(() => ExecuteCncEditorAction(vm => vm.SaveProgramCommand.Execute())); LoadCncProgramCommand = new DelegateCommand(() => ExecuteCncEditorAction(vm => vm.LoadProgramCommand.Execute())); @@ -377,6 +380,21 @@ namespace XplorePlane.ViewModels } } + private void ExecuteOpenSettings() + { + try + { + ShowOrActivate(_settingsWindow, w => _settingsWindow = w, + () => new Views.SettingsWindow(this), "Settings"); + } + catch (Exception ex) + { + _logger.Error(ex, "Failed to open settings window"); + MessageBox.Show($"Failed to open settings window: {ex.Message}", + "Error", MessageBoxButton.OK, MessageBoxImage.Error); + } + } + private void ExecuteAxisReset() { var result = MessageBox.Show("确认执行轴复位操作?", "轴复位", diff --git a/XplorePlane/Views/Main/MainWindow.xaml b/XplorePlane/Views/Main/MainWindow.xaml index 628b1d3..15ba9c8 100644 --- a/XplorePlane/Views/Main/MainWindow.xaml +++ b/XplorePlane/Views/Main/MainWindow.xaml @@ -391,6 +391,19 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +