using System.Windows;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
using System.Windows.Media;
using XFEToolBox.Model;
using XFEToolBox.Views.Pages.Popups;
using XFEToolBox.Views.Windows;
namespace XFEToolBox.Utilities;
public static class PopupHelper
{
private static NormalDialogPopupPage CreateNormalDialogPage(object content)
{
var dialogPage = new NormalDialogPopupPage();
dialogPage.ViewModel.Content = content;
return dialogPage;
}
private static ScrollViewer CreateTextContent(string text, Color textColor) => new()
{
Content = new TextBlock
{
Text = text,
Foreground = new SolidColorBrush(textColor),
Margin = new Thickness(20, 20, 20, 0),
TextWrapping = TextWrapping.WrapWithOverflow
},
HorizontalScrollBarVisibility = ScrollBarVisibility.Disabled,
VerticalScrollBarVisibility = ScrollBarVisibility.Auto,
Resources = new ResourceDictionary
{
{
typeof(ScrollBar),
new Style
{
TargetType = typeof(ScrollBar),
BasedOn = (Style)Application.Current.FindResource("ConsoleScrollBar")
}
}
}
};
public static MessageBoxResult? ShowConfirmDialog(object content, bool showCancelButton = false, string confirmText = "确定", string cancelText = "取消")
{
var dialog = CreateNormalDialogPage(content);
dialog.ViewModel.ConfirmText = confirmText;
dialog.ViewModel.CancelText = cancelText;
dialog.ViewModel.ConfirmGridLength = new GridLength(1, GridUnitType.Star);
if (showCancelButton)
dialog.ViewModel.CancelGridLength = new GridLength(1, GridUnitType.Star);
return ShowDialog(dialog);
}
public static MessageBoxResult? ShowConfirmDialog(string text, Color textColor, bool showCancelButton = false, string confirmText = "确定", string cancelText = "取消") => ShowConfirmDialog(CreateTextContent(text, textColor), showCancelButton, confirmText, cancelText);
public static MessageBoxResult? ShowConfirmDialog(string text, bool showCancelButton = false, string confirmText = "确定", string cancelText = "取消") => ShowConfirmDialog(text, Colors.Black, showCancelButton, confirmText, cancelText);
public static MessageBoxResult? ShowYesOrNoDialog(object content, bool showCancelButton = false, string yesText = "是", string noText = "否")
{
var dialog = CreateNormalDialogPage(content);
dialog.ViewModel.YesText = yesText;
dialog.ViewModel.NoText = noText;
dialog.ViewModel.YesGridLength = new GridLength(1, GridUnitType.Star);
dialog.ViewModel.NoGridLength = new GridLength(1, GridUnitType.Star);
if (showCancelButton)
dialog.ViewModel.CancelGridLength = new GridLength(1, GridUnitType.Star);
return ShowDialog(dialog);
}
public static MessageBoxResult? ShowYesOrNoDialog(string text, Color textColor, bool showCancelButton = false, string yesText = "是", string noText = "否") => ShowYesOrNoDialog(CreateTextContent(text, textColor), showCancelButton, yesText, noText);
public static MessageBoxResult? ShowYesOrNoDialog(string text, bool showCancelButton = false, string yesText = "是", string noText = "否") => ShowYesOrNoDialog(text, Colors.Black, showCancelButton, yesText, noText);
public static MessageBoxResult? ShowDialog(object content, double width = 320, double height = 230)
{
var popupWindow = new PopupWindow
{
Width = width,
Height = height
};
popupWindow.ViewModel.Content = content;
if (content is IPopupPage popupPage)
popupPage.PopupWindow = popupWindow;
popupWindow.ShowDialog();
return popupWindow.Result;
}
}