using MaxwellFramework.Core.Common.Command; using Stylet; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Input; namespace MainShell.Recipe.ViewModel { public class RecipeReNameWindowModel : PropertyChangedBase { private bool? _dialogResult; public bool? DialogResult { get => _dialogResult; set => SetAndNotify(ref _dialogResult, value); } private string _recipeName; public string RecipeName { get => _recipeName; set { if (SetAndNotify(ref _recipeName, value)) { UpdateValidationMessage(); ((DelegateCommand)OkCommand).RaiseCanExecuteChanged(); } } } private string _oldRecipeName; public string OldRecipeName { get { return _oldRecipeName; } set { SetAndNotify(ref _oldRecipeName, value); } } private string _validationMessage; /// /// 在界面上显示的验证信息(为空时不显示) /// public string ValidationMessage { get => _validationMessage; set => SetAndNotify(ref _validationMessage, value); } public IEnumerable ExistingRecipeNames { get; set; } public ICommand OkCommand { get; } public ICommand CancelCommand { get; } public RecipeReNameWindowModel() { OkCommand = new DelegateCommand(OnOk, CanOk); CancelCommand = new DelegateCommand(OnCancel); } private void OnOk(object obj) { DialogResult = true; } private bool CanOk(object obj) { if (string.IsNullOrWhiteSpace(RecipeName)) return false; if (ExistingRecipeNames != null && ExistingRecipeNames.Contains(RecipeName, StringComparer.OrdinalIgnoreCase)) return false; return true; } private void OnCancel(object obj) { DialogResult = false; } private void UpdateValidationMessage() { if (string.IsNullOrWhiteSpace(RecipeName)) { ValidationMessage = "名称不能为空"; return; } if (ExistingRecipeNames != null && ExistingRecipeNames.Contains(RecipeName, StringComparer.OrdinalIgnoreCase)) { ValidationMessage = "名称已存在"; return; } ValidationMessage = string.Empty; } } }