123 lines
3.7 KiB
C#
123 lines
3.7 KiB
C#
using Common.PubEvent;
|
|
using ControlzEx.Standard;
|
|
using Prism.Commands;
|
|
using Prism.Mvvm;
|
|
using System.Windows.Input;
|
|
|
|
namespace BaseFrame.ViewModels.Dialogs
|
|
{
|
|
public class MessageBoxViewModel : BindableBase, IDialogAware
|
|
{
|
|
#region 属性
|
|
|
|
private string _Title;
|
|
public string Title
|
|
{
|
|
get => _Title;
|
|
set => SetProperty(ref _Title, value);
|
|
}
|
|
|
|
private string _Message = "";
|
|
public string Message
|
|
{
|
|
get => _Message;
|
|
set => SetProperty(ref _Message, value);
|
|
}
|
|
|
|
private string _Icon= $"pack://siteoforigin:,,,/Resources/Images/info.png";
|
|
public string Icon
|
|
{
|
|
get => _Icon;
|
|
set => SetProperty(ref _Icon, value);
|
|
}
|
|
|
|
private bool _ShowYes;
|
|
public bool ShowYes
|
|
{
|
|
get => _ShowYes;
|
|
set => SetProperty(ref _ShowYes, value);
|
|
}
|
|
|
|
private bool _ShowNo;
|
|
public bool ShowNo
|
|
{
|
|
get => _ShowNo;
|
|
set => SetProperty(ref _ShowNo, value);
|
|
}
|
|
|
|
private bool _ShowOk;
|
|
public bool ShowOk
|
|
{
|
|
get => _ShowOk;
|
|
set => SetProperty(ref _ShowOk, value);
|
|
}
|
|
|
|
private bool _ShowCancel;
|
|
public bool ShowCancel
|
|
{
|
|
get => _ShowCancel;
|
|
set => SetProperty(ref _ShowCancel, value);
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region 命令
|
|
public ICommand YesCommand { get; set; }
|
|
public ICommand NoCommand { get; set; }
|
|
public ICommand OkCommand { get; set; }
|
|
public ICommand CancelCommand { get; set; }
|
|
#endregion
|
|
|
|
public DialogCloseListener RequestClose { get; set; }
|
|
private IEventAggregator _eventAggregator;
|
|
public MessageBoxViewModel(IEventAggregator eventAggregator)
|
|
{
|
|
_eventAggregator= eventAggregator;
|
|
YesCommand = new DelegateCommand(OnYes);
|
|
NoCommand = new DelegateCommand(OnNo);
|
|
OkCommand = new DelegateCommand(OnOk);
|
|
CancelCommand = new DelegateCommand(OnCancel);
|
|
}
|
|
|
|
private void CloseDialog(ButtonResult result)
|
|
{
|
|
var parameters = new DialogParameters();
|
|
RequestClose.Invoke(new DialogResult(result));
|
|
}
|
|
|
|
private void OnYes() => CloseDialog(ButtonResult.Yes);
|
|
private void OnNo() => CloseDialog(ButtonResult.No);
|
|
private void OnOk() => CloseDialog(ButtonResult.OK);
|
|
private void OnCancel() => CloseDialog(ButtonResult.Cancel);
|
|
|
|
#region Prism Dialog 规范
|
|
public bool CanCloseDialog() => true;
|
|
|
|
public void OnDialogClosed()
|
|
{
|
|
_eventAggregator.GetEvent<OverlayEvent>().Publish(false);
|
|
}
|
|
|
|
public void OnDialogOpened(IDialogParameters parameters)
|
|
{
|
|
Title = parameters.GetValue<string>("Title");
|
|
Message = parameters.GetValue<string>("Message");
|
|
var iconKey = parameters.GetValue<string>("Icon"); // info / error / warn
|
|
Icon = iconKey switch
|
|
{
|
|
"info" => $"pack://siteoforigin:,,,/Resources/Images/info.png",
|
|
"error" => $"pack://siteoforigin:,,,/Resources/Images/error.png",
|
|
"warn" => $"pack://siteoforigin:,,,/Resources/Images/warning.png",
|
|
_ => $"pack://siteoforigin:,,,/Resources/Images/info.png" // 默认
|
|
};
|
|
|
|
|
|
ShowYes = parameters.GetValue<bool>("ShowYes");
|
|
ShowNo = parameters.GetValue<bool>("ShowNo");
|
|
ShowOk = parameters.GetValue<bool>("ShowOk");
|
|
ShowCancel = parameters.GetValue<bool>("ShowCancel");
|
|
}
|
|
#endregion
|
|
}
|
|
}
|