diff --git a/demo/Ursa.Demo/Pages/DialogDemo.axaml b/demo/Ursa.Demo/Pages/DialogDemo.axaml
index 0ef4c5e..1e6e67f 100644
--- a/demo/Ursa.Demo/Pages/DialogDemo.axaml
+++ b/demo/Ursa.Demo/Pages/DialogDemo.axaml
@@ -36,8 +36,7 @@
OnContent="Modal" />
@@ -81,8 +80,7 @@
OnContent="Modal" />
diff --git a/demo/Ursa.Demo/ViewModels/DialogDemoViewModel.cs b/demo/Ursa.Demo/ViewModels/DialogDemoViewModel.cs
index 7376432..cf5d6b3 100644
--- a/demo/Ursa.Demo/ViewModels/DialogDemoViewModel.cs
+++ b/demo/Ursa.Demo/ViewModels/DialogDemoViewModel.cs
@@ -55,11 +55,11 @@ public class DialogDemoViewModel: ObservableObject
set => SetProperty(ref _isModal, value);
}
- private bool _canCloseMaskToClose;
- public bool CanCloseMaskToClose
+ private bool _canLightDismiss;
+ public bool CanLightDismiss
{
- get => _canCloseMaskToClose;
- set => SetProperty(ref _canCloseMaskToClose, value);
+ get => _canLightDismiss;
+ set => SetProperty(ref _canLightDismiss, value);
}
private DialogResult? _defaultResult;
@@ -118,7 +118,7 @@ public class DialogDemoViewModel: ObservableObject
Title = "Please select a date",
Mode = SelectedMode,
Buttons = SelectedButton,
- CanClickOnMaskToClose = CanCloseMaskToClose,
+ CanLightDismiss = CanLightDismiss,
HorizontalAnchor = HorizontalPosition.Right,
HorizontalOffset = 50,
VerticalAnchor = VerticalPosition.Top,
@@ -136,7 +136,8 @@ public class DialogDemoViewModel: ObservableObject
{
Title = "Please select a date",
Mode = SelectedMode,
- Buttons = SelectedButton
+ Buttons = SelectedButton,
+ CanLightDismiss = CanLightDismiss,
});
}
}
@@ -169,14 +170,15 @@ public class DialogDemoViewModel: ObservableObject
Result = await OverlayDialog.ShowCustomModal(
vm, IsGlobal ? null : "LocalHost", options: new OverlayDialogOptions()
{
- CanClickOnMaskToClose = CanCloseMaskToClose,
+ CanLightDismiss = CanLightDismiss,
});
Date = vm.Date;
}
else
{
OverlayDialog.ShowCustom(new DialogWithActionViewModel(),
- IsGlobal ? null : "LocalHost");
+ IsGlobal ? null : "LocalHost",
+ options: new OverlayDialogOptions{ CanLightDismiss = CanLightDismiss });
}
}
diff --git a/src/Ursa/Controls/Dialog/DialogControlBase.cs b/src/Ursa/Controls/Dialog/DialogControlBase.cs
index a579f14..5c45fb4 100644
--- a/src/Ursa/Controls/Dialog/DialogControlBase.cs
+++ b/src/Ursa/Controls/Dialog/DialogControlBase.cs
@@ -29,7 +29,6 @@ public abstract class DialogControlBase : OverlayFeedbackElement
internal double? VerticalOffset { get; set; }
internal double? HorizontalOffsetRatio { get; set; }
internal double? VerticalOffsetRatio { get; set; }
- internal bool CanClickOnMaskToClose { get; set; }
internal bool CanLightDismiss { get; set; }
internal bool CanDragMove { get; set; }
diff --git a/src/Ursa/Controls/Dialog/Options/DialogOptions.cs b/src/Ursa/Controls/Dialog/Options/DialogOptions.cs
index 2a07bbb..f7c3408 100644
--- a/src/Ursa/Controls/Dialog/Options/DialogOptions.cs
+++ b/src/Ursa/Controls/Dialog/Options/DialogOptions.cs
@@ -26,5 +26,4 @@ public class DialogOptions
public DialogButton Button { get; set; } = DialogButton.OKCancel;
public bool IsCloseButtonVisible { get; set; } = true;
- public bool CanDragMove { get; set; } = true;
}
\ No newline at end of file
diff --git a/src/Ursa/Controls/Dialog/Options/OverlayDialogOptions.cs b/src/Ursa/Controls/Dialog/Options/OverlayDialogOptions.cs
index 23fd211..f58ea2a 100644
--- a/src/Ursa/Controls/Dialog/Options/OverlayDialogOptions.cs
+++ b/src/Ursa/Controls/Dialog/Options/OverlayDialogOptions.cs
@@ -17,16 +17,32 @@ 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;
+ ///
+ /// This attribute is only used when HorizontalAnchor is not Center
+ ///
public double? HorizontalOffset { get; set; } = null;
+ ///
+ /// This attribute is only used when VerticalAnchor is not Center
+ ///
public double? VerticalOffset { get; set; } = null;
+ ///
+ /// Only works for DefaultDialogControl
+ ///
public DialogMode Mode { get; set; } = DialogMode.None;
+ ///
+ /// Only works for DefaultDialogControl
+ ///
public DialogButton Buttons { get; set; } = DialogButton.OKCancel;
+ ///
+ /// Only works for DefaultDialogControl
+ ///
public string? Title { get; set; } = null;
- public bool IsCloseButtonVisible { get; set; } = true;
-
+ ///
+ /// Only works for CustomDialogControl
+ ///
+ public bool ShowCloseButton { get; set; } = true;
public bool CanLightDismiss { get; set; }
public bool CanDragMove { get; set; } = true;
}
\ No newline at end of file
diff --git a/src/Ursa/Controls/Dialog/OverlayDialog.cs b/src/Ursa/Controls/Dialog/OverlayDialog.cs
index 52d1520..8d16e5f 100644
--- a/src/Ursa/Controls/Dialog/OverlayDialog.cs
+++ b/src/Ursa/Controls/Dialog/OverlayDialog.cs
@@ -18,7 +18,7 @@ public static class OverlayDialog
DataContext = vm,
};
ConfigureDefaultDialogControl(t, options);
- host?.AddDialog(t);
+ host.AddDialog(t);
}
public static void Show(Control control, object? vm, string? hostId = null,
@@ -32,7 +32,7 @@ public static class OverlayDialog
DataContext = vm,
};
ConfigureDefaultDialogControl(t, options);
- host?.AddDialog(t);
+ host.AddDialog(t);
}
@@ -63,8 +63,8 @@ public static class OverlayDialog
Content = new TView(),
DataContext = vm,
};
- ConfigureDialogControl(t, options);
- host?.AddDialog(t);
+ ConfigureCustomDialogControl(t, options);
+ host.AddDialog(t);
}
public static void ShowCustom(Control control, object? vm, string? hostId = null,
@@ -77,8 +77,8 @@ public static class OverlayDialog
Content = control,
DataContext = vm,
};
- ConfigureDialogControl(t, options);
- host?.AddDialog(t);
+ ConfigureCustomDialogControl(t, options);
+ host.AddDialog(t);
}
public static void ShowCustom(object? vm, string? hostId = null,
@@ -94,7 +94,7 @@ public static class OverlayDialog
Content = view,
DataContext = vm,
};
- ConfigureDialogControl(t, options);
+ ConfigureCustomDialogControl(t, options);
host.AddDialog(t);
}
@@ -110,7 +110,7 @@ public static class OverlayDialog
DataContext = vm,
};
ConfigureDefaultDialogControl(t, options);
- host?.AddModalDialog(t);
+ host.AddModalDialog(t);
return t.ShowAsync(token);
}
@@ -125,7 +125,7 @@ public static class OverlayDialog
DataContext = vm,
};
ConfigureDefaultDialogControl(t, options);
- host?.AddModalDialog(t);
+ host.AddModalDialog(t);
return t.ShowAsync(token);
}
@@ -140,8 +140,8 @@ public static class OverlayDialog
Content = new TView(),
DataContext = vm,
};
- ConfigureDialogControl(t, options);
- host?.AddModalDialog(t);
+ ConfigureCustomDialogControl(t, options);
+ host.AddModalDialog(t);
return t.ShowAsync(token);
}
@@ -155,8 +155,8 @@ public static class OverlayDialog
Content = control,
DataContext = vm,
};
- ConfigureDialogControl(t, options);
- host?.AddModalDialog(t);
+ ConfigureCustomDialogControl(t, options);
+ host.AddModalDialog(t);
return t.ShowAsync(token);
}
@@ -173,12 +173,12 @@ public static class OverlayDialog
Content = view,
DataContext = vm,
};
- ConfigureDialogControl(t, options);
- host?.AddModalDialog(t);
+ ConfigureCustomDialogControl(t, options);
+ host.AddModalDialog(t);
return t.ShowAsync(token);
}
- private static void ConfigureDialogControl(CustomDialogControl control, OverlayDialogOptions? options)
+ private static void ConfigureCustomDialogControl(CustomDialogControl control, OverlayDialogOptions? options)
{
options ??= OverlayDialogOptions.Default;
control.HorizontalAnchor = options.HorizontalAnchor;
@@ -189,8 +189,7 @@ public static class OverlayDialog
control.HorizontalAnchor == HorizontalPosition.Center ? null : options.HorizontalOffset;
control.VerticalOffset =
options.VerticalAnchor == VerticalPosition.Center ? null : options.VerticalOffset;
- control.CanClickOnMaskToClose = options.CanClickOnMaskToClose;
- control.IsCloseButtonVisible = options.IsCloseButtonVisible;
+ control.IsCloseButtonVisible = options.ShowCloseButton;
control.CanLightDismiss = options.CanLightDismiss;
control.CanDragMove = options.CanDragMove;
}
@@ -206,7 +205,6 @@ public static class OverlayDialog
control.HorizontalAnchor == HorizontalPosition.Center ? null : options.HorizontalOffset;
control.VerticalOffset =
options.VerticalAnchor == VerticalPosition.Center ? null : options.VerticalOffset;
- control.CanClickOnMaskToClose = options.CanClickOnMaskToClose;
control.Mode = options.Mode;
control.Buttons = options.Buttons;
control.Title = options.Title;
diff --git a/src/Ursa/Controls/OverlayShared/OverlayDialogHost.Dialog.cs b/src/Ursa/Controls/OverlayShared/OverlayDialogHost.Dialog.cs
index 909eb36..0c92b2d 100644
--- a/src/Ursa/Controls/OverlayShared/OverlayDialogHost.Dialog.cs
+++ b/src/Ursa/Controls/OverlayShared/OverlayDialogHost.Dialog.cs
@@ -85,7 +85,7 @@ public partial class OverlayDialogHost
PureRectangle? mask = null;
if (control.CanLightDismiss)
{
- CreateOverlayMask(false, control.CanLightDismiss);
+ mask = CreateOverlayMask(false, control.CanLightDismiss);
}
if (mask is not null)
{
@@ -136,7 +136,7 @@ public partial class OverlayDialogHost
///
internal void AddModalDialog(DialogControlBase control)
{
- var mask = CreateOverlayMask(true, control.CanClickOnMaskToClose);
+ var mask = CreateOverlayMask(true, control.CanLightDismiss);
_layers.Add(new DialogPair(mask, control));
control.SetAsModal(true);
ResetZIndices();
diff --git a/src/Ursa/Controls/OverlayShared/OverlayDialogHost.Shared.cs b/src/Ursa/Controls/OverlayShared/OverlayDialogHost.Shared.cs
index 0e90afe..2d768ca 100644
--- a/src/Ursa/Controls/OverlayShared/OverlayDialogHost.Shared.cs
+++ b/src/Ursa/Controls/OverlayShared/OverlayDialogHost.Shared.cs
@@ -96,7 +96,7 @@ public partial class OverlayDialogHost: Canvas
}
else if(canCloseOnClick)
{
- rec.SetCurrentValue(Shape.FillProperty, Brushes.Transparent);
+ rec.SetCurrentValue(PureRectangle.BackgroundProperty, Brushes.Transparent);
}
if (canCloseOnClick)
{