ShakerConfigPageViewModel.cs 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. using HandyControl.Interactivity.Commands;
  2. using Shaker.Model;
  3. using Shaker.ViewModel;
  4. using ShakerManger.Data;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Diagnostics.CodeAnalysis;
  8. using System.Linq;
  9. using System.Text;
  10. using System.Threading.Tasks;
  11. using System.Windows.Input;
  12. using System.Text.RegularExpressions;
  13. namespace ShakerManger.ViewModel
  14. {
  15. internal class ShakerConfigPageViewModel:DisplayViewModel<ModelBase>,ISystemPageViewModel
  16. {
  17. public ICommand SaveCommand => new DelegateCommand(Save);
  18. private void Save()
  19. {
  20. if (currentShaker == null) return;
  21. if (!Regex.IsMatch(CurrentShaker.IPAddress, @"(^((2[0-4]\d.)|(25[0-5].)|(1\d{2}.)|(\d{1,2}.))((2[0-5]{2}.)|(1\d{2}.)|(\d{1,2}.){2})((1\d{2})|(2[0-5]{2})|(\d{1,2}))$)", RegexOptions.IgnoreCase))
  22. {
  23. PromptViewModel.Default.Init();
  24. PromptViewModel.Default.NoVisibility = System.Windows.Visibility.Collapsed;
  25. PromptViewModel.Default.Message = "IP地址格式不正确";
  26. PromptViewModel.Default.IconType = IconType.Error;
  27. PromptViewModel.Default.IsOpen = true;
  28. return;
  29. }
  30. Sql.Default.Replace(x => x.Id, CurrentShaker.Model.Id, CurrentShaker.Model);
  31. PromptViewModel.Default.Init();
  32. PromptViewModel.Default.NoVisibility = System.Windows.Visibility.Collapsed;
  33. PromptViewModel.Default.Message = "保存成功";
  34. PromptViewModel.Default.IconType = IconType.Info;
  35. PromptViewModel.Default.IsOpen = true;
  36. BusManger.Defaut.Bus.PubSub.PublishAsync(CurrentShaker.Model, new Dictionary<string, string>()
  37. {
  38. {Shaker.Model.GlobalVariable.ShakerIDKey,CurrentShaker.Model.Id }
  39. });
  40. }
  41. public ShakerControlViewModel CurrentShaker { get => currentShaker; set =>UpdateProperty(ref currentShaker, value); }
  42. public override Type View { get; } = typeof(View.ShakerPageView);
  43. private bool isEnabled = true;
  44. [AllowNull]
  45. private ShakerControlViewModel currentShaker;
  46. public SystemPageType SystemPageType => SystemPageType.ShakerPage;
  47. public string IconPath { get; } = (string)App.Current.FindResource("ShakerIcon");
  48. public bool IsEnabled { get => isEnabled; set => UpdateProperty(ref isEnabled, value); }
  49. }
  50. }