using Prism.Commands; using Prism.Mvvm; using Prism.Services.Dialogs; using StartServerWPF.Models; using StartServerWPF.Modules.Main.Models; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Input; namespace StartServerWPF.Modules.Main.ViewModels { public class AddWorkAreaDialogViewModel : BindableBase, IDialogAware { public AddWorkAreaDialogViewModel() { } private string _title = "添加工区"; public string Title => _title; public event Action RequestClose; public bool CanCloseDialog() { return true; } public void OnDialogClosed() { } public void OnDialogOpened(IDialogParameters parameters) { var _type = parameters.GetValue("type"); } private string _workAreaName; public string WorkAreaName { get => _workAreaName; set { SetProperty(ref _workAreaName, value); } } private string _workAreaPath; public string WorkAreaPath { get => _workAreaPath; set { SetProperty(ref _workAreaPath, value); } } public DelegateCommand FilePathSaveCommand=> new(()=> { System.Windows.Forms.FolderBrowserDialog fbd = new System.Windows.Forms.FolderBrowserDialog(); fbd.ShowNewFolderButton = true; if(string.IsNullOrEmpty(WorkAreaName)) { MessageBox.Show("工区名称不能为空"); return; } if (fbd.ShowDialog() == System.Windows.Forms.DialogResult.OK) { string path = Path.Combine(fbd.SelectedPath, WorkAreaName); if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } WorkAreaPath = path; } }); public ICommand ConfirmCommand { get => new DelegateCommand(() => { // 确认操作 // 数据校验(关键字段不能为空、年龄做数字区间的校验、做UserName的唯一检查(自定义特性检查) if (string.IsNullOrEmpty(WorkAreaName) || string.IsNullOrEmpty(WorkAreaPath)) { MessageBox.Show("工区名称和目录不能为空", "提示", MessageBoxButton.OK); return; } if (MessageBox.Show("确认修改?", "参数设置", MessageBoxButton.OKCancel, MessageBoxImage.Exclamation) == MessageBoxResult.OK) { var dialog = new DialogResult(ButtonResult.OK); Workareas workareas = new Workareas(); workareas.workareaname = WorkAreaName; workareas.filepath = WorkAreaPath; dialog.Parameters.Add("param1", workareas); RequestClose?.Invoke( dialog); } }); } public ICommand CancelCommand { get => new DelegateCommand(() => { RequestClose?.Invoke(new DialogResult(ButtonResult.Cancel)); }); } } }