diff --git a/demo/Ursa.Demo/Pages/MessageBoxDemo.axaml b/demo/Ursa.Demo/Pages/MessageBoxDemo.axaml
index 477beeb..706c8d5 100644
--- a/demo/Ursa.Demo/Pages/MessageBoxDemo.axaml
+++ b/demo/Ursa.Demo/Pages/MessageBoxDemo.axaml
@@ -20,6 +20,7 @@
+
diff --git a/demo/Ursa.Demo/ViewModels/MessageBoxDemoViewModel.cs b/demo/Ursa.Demo/ViewModels/MessageBoxDemoViewModel.cs
index 2bca373..3bb7a45 100644
--- a/demo/Ursa.Demo/ViewModels/MessageBoxDemoViewModel.cs
+++ b/demo/Ursa.Demo/ViewModels/MessageBoxDemoViewModel.cs
@@ -61,7 +61,14 @@ public class MessageBoxDemoViewModel: ObservableObject
_title = value ? "Ursa MessageBox" : string.Empty;
}
}
-
+
+ private bool _useOverlay;
+
+ public bool UseOverlay
+ {
+ get => _useOverlay;
+ set => SetProperty(ref _useOverlay, value);
+ }
@@ -80,26 +87,46 @@ public class MessageBoxDemoViewModel: ObservableObject
private async Task OnDefaultMessageAsync()
{
- Result = await MessageBox.ShowAsync(_message, _title, icon: SelectedIcon);
+ if (UseOverlay)
+ {
+ Result = await MessageBox.ShowOverlayAsync(_message, _title, icon: SelectedIcon);
+ }
+ else
+ {
+ Result = await MessageBox.ShowAsync(_message, _title, icon: SelectedIcon);
+ }
+
}
private async Task OnOkAsync()
{
- Result = await MessageBox.ShowAsync(_message, _title, icon: SelectedIcon, button:MessageBoxButton.OK);
+ await Show(MessageBoxButton.OK);
}
private async Task OnYesNoAsync()
{
- Result = await MessageBox.ShowAsync(_message, _title, icon: SelectedIcon, button: MessageBoxButton.YesNo);
+ await Show(MessageBoxButton.YesNo);
}
private async Task OnYesNoCancelAsync()
{
- Result = await MessageBox.ShowAsync(_message, _title, icon: SelectedIcon, button: MessageBoxButton.YesNoCancel);
+ await Show(MessageBoxButton.YesNoCancel);
}
private async Task OnOkCancelAsync()
{
- Result = await MessageBox.ShowAsync(_message, _title, icon: SelectedIcon, button:MessageBoxButton.OKCancel);
+ await Show(MessageBoxButton.OK);
+ }
+
+ private async Task Show(MessageBoxButton button)
+ {
+ if (UseOverlay)
+ {
+ Result = await MessageBox.ShowOverlayAsync(_message, _title, icon: SelectedIcon, button:button);
+ }
+ else
+ {
+ Result = await MessageBox.ShowAsync(_message, _title, icon: SelectedIcon, button:button);
+ }
}
}
\ No newline at end of file
diff --git a/src/Ursa.Themes.Semi/Controls/MessageBox.axaml b/src/Ursa.Themes.Semi/Controls/MessageBox.axaml
index 3702213..39d3f19 100644
--- a/src/Ursa.Themes.Semi/Controls/MessageBox.axaml
+++ b/src/Ursa.Themes.Semi/Controls/MessageBox.axaml
@@ -15,11 +15,15 @@
-
+
-
- Full
- BorderOnly
+
+
+ Full
+
+
+ BorderOnly
+
@@ -29,35 +33,34 @@
-
+
-
-
-
-
-
+
+
+
+
+
+ Content="No"
+ Theme="{DynamicResource SolidButton}" />
+ Content="Yes"
+ Theme="{DynamicResource SolidButton}" />
+ Content="OK"
+ Theme="{DynamicResource SolidButton}" />
@@ -134,6 +140,138 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Ursa/Controls/Dialog/DialogControl.cs b/src/Ursa/Controls/Dialog/DialogControl.cs
index ca3e93c..80f5c35 100644
--- a/src/Ursa/Controls/Dialog/DialogControl.cs
+++ b/src/Ursa/Controls/Dialog/DialogControl.cs
@@ -17,7 +17,7 @@ public class DialogControl: ContentControl
public const string PART_TitleArea = "PART_TitleArea";
public const string PC_Modal = ":modal";
- private Button? _closeButton;
+ protected internal Button? _closeButton;
private Panel? _titleArea;
public event EventHandler? LayerChanged;
public event EventHandler