feat: fix MessageBox default position, use internal option default instance.

This commit is contained in:
rabbitism
2024-02-03 21:46:44 +08:00
parent 6d20264c6a
commit 15203b4284
6 changed files with 20 additions and 9 deletions

View File

@@ -217,10 +217,7 @@ public static class Dialog
/// <param name="options"></param>
private static void ConfigureDefaultDialogWindow(DefaultDialogWindow window, DialogOptions? options)
{
if (options is null)
{
options = new DialogOptions();
}
options ??= DialogOptions.Default;
window.WindowStartupLocation = options.StartupLocation;
window.Title = options.Title;
window.Buttons = options.Button;

View File

@@ -21,9 +21,9 @@ public class DialogControl: ContentControl
protected internal Button? _closeButton;
private Panel? _titleArea;
internal HorizontalPosition HorizontalAnchor { get; set; }
internal VerticalPosition VerticalAnchor { get; set; }
internal HorizontalPosition HorizontalAnchor { get; set; } = HorizontalPosition.Center;
internal VerticalPosition VerticalAnchor { get; set; } = VerticalPosition.Center;
internal HorizontalPosition ActualHorizontalAnchor { get; set; }
internal VerticalPosition ActualVerticalAnchor { get; set; }
internal double? HorizontalOffset { get; set; }

View File

@@ -5,7 +5,7 @@ namespace Ursa.Controls;
public class DialogOptions
{
public static DialogOptions Default { get; } = new DialogOptions();
internal static DialogOptions Default { get; } = new DialogOptions();
/// <summary>
/// The Startup Location of DialogWindow. Default is <see cref="WindowStartupLocation.CenterOwner"/>
/// </summary>

View File

@@ -16,6 +16,7 @@ public enum VerticalPosition
public class OverlayDialogOptions
{
internal static OverlayDialogOptions Default { get; } = new OverlayDialogOptions();
public bool CanClickOnMaskToClose { get; set; } = false;
public HorizontalPosition HorizontalAnchor { get; set; } = HorizontalPosition.Center;
public VerticalPosition VerticalAnchor { get; set; } = VerticalPosition.Center;

View File

@@ -180,7 +180,7 @@ public static class OverlayDialog
private static void ConfigureDialogControl(DialogControl control, OverlayDialogOptions? options)
{
if (options is null) options = new OverlayDialogOptions();
options ??= OverlayDialogOptions.Default;
control.HorizontalAnchor = options.HorizontalAnchor;
control.VerticalAnchor = options.VerticalAnchor;
control.ActualHorizontalAnchor = options.HorizontalAnchor;

View File

@@ -132,4 +132,17 @@ public class MessageBoxControl: DialogControl
{
if (button is not null) button.IsVisible = visible;
}
internal override void CloseDialog()
{
MessageBoxResult result = Buttons switch
{
MessageBoxButton.OK => MessageBoxResult.OK,
MessageBoxButton.OKCancel => MessageBoxResult.Cancel,
MessageBoxButton.YesNo => MessageBoxResult.No,
MessageBoxButton.YesNoCancel => MessageBoxResult.Cancel,
_ => MessageBoxResult.None
};
OnDialogControlClosing(this, result);
}
}