ThemeMessageBoxViewModel.cs 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. namespace HistoryView.ViewModels.MessageBoxs;
  2. internal partial class ThemeMessageBoxViewModel : ObservableObject, IDialogAware
  3. {
  4. public DialogCloseListener RequestClose { get; set; }
  5. public bool CanCloseDialog()
  6. {
  7. return true;
  8. }
  9. public void OnDialogClosed()
  10. {
  11. }
  12. [ObservableProperty]
  13. private string? _Message;
  14. [ObservableProperty]
  15. private Visibility _Info = Visibility.Collapsed;
  16. [ObservableProperty]
  17. private Visibility _ask = Visibility.Collapsed;
  18. [ObservableProperty]
  19. private Visibility _Warning = Visibility.Collapsed;
  20. [ObservableProperty]
  21. private Visibility _Error = Visibility.Collapsed;
  22. [ObservableProperty]
  23. private Visibility _OK = Visibility.Collapsed;
  24. [ObservableProperty]
  25. private Visibility _OKCancel = Visibility.Collapsed;
  26. [ObservableProperty]
  27. private Visibility _YesNo = Visibility.Collapsed;
  28. [ObservableProperty]
  29. private Visibility _YesNoCancel = Visibility.Collapsed;
  30. public void OnDialogOpened(IDialogParameters parameters)
  31. {
  32. if (parameters["Message"] is string message)
  33. this.Message = message;
  34. if (parameters["Button"] is MessageBoxButton button)
  35. {
  36. switch (button)
  37. {
  38. case MessageBoxButton.OK:
  39. this.OK = Visibility.Visible;
  40. break;
  41. case MessageBoxButton.OKCancel:
  42. this.OKCancel = Visibility.Visible;
  43. break;
  44. case MessageBoxButton.YesNoCancel:
  45. this.YesNoCancel = Visibility.Visible;
  46. break;
  47. case MessageBoxButton.YesNo:
  48. this.YesNo = Visibility.Visible;
  49. break;
  50. default:
  51. break;
  52. }
  53. }
  54. if (parameters["Icon"] is MessageBoxImage icon)
  55. {
  56. switch (icon)
  57. {
  58. case MessageBoxImage.Error:
  59. this.Error = Visibility.Visible;
  60. break;
  61. case MessageBoxImage.Question:
  62. this.Ask = Visibility.Visible;
  63. break;
  64. case MessageBoxImage.Warning:
  65. this.Warning = Visibility.Visible;
  66. break;
  67. case MessageBoxImage.Information:
  68. this.Info = Visibility.Visible;
  69. break;
  70. default:
  71. break;
  72. }
  73. }
  74. }
  75. [RelayCommand]
  76. private void Exit(string para)
  77. {
  78. switch (para)
  79. {
  80. case "OK":
  81. this.RequestClose.Invoke(ButtonResult.OK);
  82. break;
  83. case "Cancel":
  84. this.RequestClose.Invoke(ButtonResult.Cancel);
  85. break;
  86. case "Yes":
  87. this.RequestClose.Invoke(ButtonResult.Yes);
  88. break;
  89. case "No":
  90. this.RequestClose.Invoke(ButtonResult.No);
  91. break;
  92. default:
  93. this.RequestClose.Invoke();
  94. break;
  95. }
  96. }
  97. }