Files
Store.Management/Source/Store.Management.Framework/Services/MessageBoxService/MessageBoxService.cs
T
2026-11-13 10:16:43 +08:00

125 lines
3.8 KiB
C#

using MAX.Core.DependencyInjection;
using Store.Management.Framework.Configs;
using System.Windows;
using MessageBox = HandyControl.Controls.MessageBox;
namespace Store.Management.Framework
{
public class MessageBoxService : IMessageBoxService, ISingletonDependency
{
protected readonly Guid id = Guid.NewGuid();
public string MessageTitle { get; set; } = string.Empty;
public MessageBoxService()
{
MessageTitle = AppConfig.AppDisplayName;
}
public virtual MessageResult Show(string messageBoxText, string caption, MessageButton button, MessageIcon icon, MessageResult defaultResult)
{
Window? window = Application.Current?.Windows.OfType<Window>().FirstOrDefault(w => w.IsActive);
if (window is null)
{
return MessageBox.Show(
messageBoxText: messageBoxText,
caption: caption,
button: button.ToMessageBoxButton(),
icon: icon.ToMessageBoxImage(),
defaultResult: defaultResult.ToMessageBoxResult()
).ToMessageResult();
}
else
{
return MessageBox.Show(
owner: window,
messageBoxText: messageBoxText,
caption: caption,
button: button.ToMessageBoxButton(),
icon: icon.ToMessageBoxImage(),
defaultResult: defaultResult.ToMessageBoxResult()
).ToMessageResult();
}
}
public void ShowInformation(string content)
{
this.ShowMessage(content, MessageTitle, MessageButton.OK, MessageIcon.Information, MessageResult.OK);
}
public void ShowWarning(string content)
{
this.ShowMessage(content, MessageTitle, MessageButton.OK, MessageIcon.Warning, MessageResult.OK);
}
public void ShowError(string content, Exception exception)
{
if (exception is null)
{
ShowError(content);
}
else
{
this.ShowMessage(content + "\n" + exception.Message, MessageTitle, MessageButton.OK, MessageIcon.Error, MessageResult.OK);
}
}
public void ShowError(string content)
{
this.ShowMessage(content, MessageTitle, MessageButton.OK, MessageIcon.Error, MessageResult.OK);
}
public bool ShowYesNoQuestion(string content)
{
MessageResult result = this.ShowMessage(content, MessageTitle, MessageButton.YesNo, MessageIcon.Question, MessageResult.No);
return result == MessageResult.Yes;
}
public bool ShowYesNoWarning(string content)
{
MessageResult result = this.ShowMessage(content, MessageTitle, MessageButton.YesNo, MessageIcon.Warning, MessageResult.No);
return result == MessageResult.Yes;
}
public bool ShowYesNoError(string content)
{
MessageResult result = this.ShowMessage(content, MessageTitle, MessageButton.YesNo, MessageIcon.Error, MessageResult.No);
return result == MessageResult.Yes;
}
public bool ShowOkCancelQuestion(string content)
{
MessageResult result = this.ShowMessage(content, MessageTitle, MessageButton.OKCancel, MessageIcon.Question, MessageResult.OK);
return result == MessageResult.OK;
}
public bool ShowOkCancelWarning(string content)
{
MessageResult result = this.ShowMessage(content, MessageTitle, MessageButton.OKCancel, MessageIcon.Warning, MessageResult.OK);
return result == MessageResult.OK;
}
public bool ShowOkCancelError(string content)
{
MessageResult result = this.ShowMessage(content, MessageTitle, MessageButton.OKCancel, MessageIcon.Error, MessageResult.OK);
return result == MessageResult.OK;
}
public MessageResult ShowYesNoCancelQuestion(string content)
{
return this.ShowMessage(content, MessageTitle, MessageButton.YesNoCancel, MessageIcon.Question, MessageResult.Cancel);
}
public MessageResult ShowYesNoCancelWarning(string content)
{
return this.ShowMessage(content, MessageTitle, MessageButton.YesNoCancel, MessageIcon.Warning, MessageResult.Cancel);
}
public MessageResult ShowYesNoCancelError(string content)
{
return this.ShowMessage(content, MessageTitle, MessageButton.YesNoCancel, MessageIcon.Error, MessageResult.Cancel);
}
}
}