diff --git a/demo/Ursa.Demo/Models/MenuKeys.cs b/demo/Ursa.Demo/Models/MenuKeys.cs
index 8532a7f..1b88691 100644
--- a/demo/Ursa.Demo/Models/MenuKeys.cs
+++ b/demo/Ursa.Demo/Models/MenuKeys.cs
@@ -13,6 +13,7 @@ public static class MenuKeys
public const string MenuKeyIconButton = "IconButton";
public const string MenuKeyKeyGestureInput = "KeyGestureInput";
public const string MenuKeyLoading = "Loading";
+ public const string MenuKeyMessageBox = "MessageBox";
public const string MenuKeyNavigation = "Navigation";
public const string MenuKeyPagination = "Pagination";
public const string MenuKeyTagInput = "TagInput";
diff --git a/demo/Ursa.Demo/Pages/MessageBoxDemo.axaml b/demo/Ursa.Demo/Pages/MessageBoxDemo.axaml
new file mode 100644
index 0000000..e9f6213
--- /dev/null
+++ b/demo/Ursa.Demo/Pages/MessageBoxDemo.axaml
@@ -0,0 +1,13 @@
+
+
+
+
+
diff --git a/demo/Ursa.Demo/Pages/MessageBoxDemo.axaml.cs b/demo/Ursa.Demo/Pages/MessageBoxDemo.axaml.cs
new file mode 100644
index 0000000..0b5cf40
--- /dev/null
+++ b/demo/Ursa.Demo/Pages/MessageBoxDemo.axaml.cs
@@ -0,0 +1,15 @@
+using Avalonia;
+using Avalonia.Controls;
+using Avalonia.Markup.Xaml;
+using Ursa.Demo.ViewModels;
+
+namespace Ursa.Demo.Pages;
+
+public partial class MessageBoxDemo : UserControl
+{
+ public MessageBoxDemo()
+ {
+ InitializeComponent();
+ this.DataContext = new MessageBoxDemoViewModel();
+ }
+}
\ No newline at end of file
diff --git a/demo/Ursa.Demo/ViewModels/MainViewViewModel.cs b/demo/Ursa.Demo/ViewModels/MainViewViewModel.cs
index d2c59ba..83fea1a 100644
--- a/demo/Ursa.Demo/ViewModels/MainViewViewModel.cs
+++ b/demo/Ursa.Demo/ViewModels/MainViewViewModel.cs
@@ -35,6 +35,7 @@ public class MainViewViewModel : ViewModelBase
MenuKeys.MenuKeyIpBox => new IPv4BoxDemoViewModel(),
MenuKeys.MenuKeyKeyGestureInput => new KeyGestureInputDemoViewModel(),
MenuKeys.MenuKeyLoading => new LoadingDemoViewModel(),
+ MenuKeys.MenuKeyMessageBox => new MessageBoxDemoViewModel(),
MenuKeys.MenuKeyNavigation => new NavigationMenuDemoViewModel(),
MenuKeys.MenuKeyPagination => new PaginationDemoViewModel(),
MenuKeys.MenuKeyTagInput => new TagInputDemoViewModel(),
diff --git a/demo/Ursa.Demo/ViewModels/MenuViewModel.cs b/demo/Ursa.Demo/ViewModels/MenuViewModel.cs
index b2f04b0..c321499 100644
--- a/demo/Ursa.Demo/ViewModels/MenuViewModel.cs
+++ b/demo/Ursa.Demo/ViewModels/MenuViewModel.cs
@@ -22,6 +22,7 @@ public class MenuViewModel: ViewModelBase
new() { MenuHeader = "IPv4Box", Key = MenuKeys.MenuKeyIpBox },
new() { MenuHeader = "KeyGestureInput", Key = MenuKeys.MenuKeyKeyGestureInput },
new() { MenuHeader = "Loading", Key = MenuKeys.MenuKeyLoading },
+ new() { MenuHeader = "Message Box", Key = MenuKeys.MenuKeyMessageBox },
new() { MenuHeader = "Navigation", Key = MenuKeys.MenuKeyNavigation },
new() { MenuHeader = "Pagination", Key = MenuKeys.MenuKeyPagination },
new() { MenuHeader = "TagInput", Key = MenuKeys.MenuKeyTagInput },
diff --git a/demo/Ursa.Demo/ViewModels/MessageBoxDemoViewModel.cs b/demo/Ursa.Demo/ViewModels/MessageBoxDemoViewModel.cs
new file mode 100644
index 0000000..809b95a
--- /dev/null
+++ b/demo/Ursa.Demo/ViewModels/MessageBoxDemoViewModel.cs
@@ -0,0 +1,22 @@
+using System.Threading.Tasks;
+using System.Windows.Input;
+using CommunityToolkit.Mvvm.ComponentModel;
+using CommunityToolkit.Mvvm.Input;
+using Ursa.Controls;
+
+namespace Ursa.Demo.ViewModels;
+
+public class MessageBoxDemoViewModel: ObservableObject
+{
+ public ICommand DefaultMessageBoxCommand { get; set; }
+
+ public MessageBoxDemoViewModel()
+ {
+ DefaultMessageBoxCommand = new AsyncRelayCommand(OnDefaultMessageAsync);
+ }
+
+ private async Task OnDefaultMessageAsync()
+ {
+ await MessageBox.ShowAsync("Hello Message Box");
+ }
+}
\ No newline at end of file
diff --git a/demo/Ursa.Demo/Views/MainWindow.axaml b/demo/Ursa.Demo/Views/MainWindow.axaml
index 054e043..5504e4a 100644
--- a/demo/Ursa.Demo/Views/MainWindow.axaml
+++ b/demo/Ursa.Demo/Views/MainWindow.axaml
@@ -10,6 +10,8 @@
d:DesignHeight="450"
d:DesignWidth="800"
x:CompileBindings="True"
+ ExtendClientAreaTitleBarHeightHint="48"
+ ExtendClientAreaToDecorationsHint="True"
x:DataType="viewModels:MainWindowViewModel"
Icon="/Assets/Ursa.ico"
mc:Ignorable="d">
diff --git a/src/Ursa.Themes.Semi/Controls/MessageBoxWindow.axaml b/src/Ursa.Themes.Semi/Controls/MessageBoxWindow.axaml
new file mode 100644
index 0000000..82ff018
--- /dev/null
+++ b/src/Ursa.Themes.Semi/Controls/MessageBoxWindow.axaml
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Ursa.Themes.Semi/Controls/_index.axaml b/src/Ursa.Themes.Semi/Controls/_index.axaml
index f3b1ac5..1fbacb9 100644
--- a/src/Ursa.Themes.Semi/Controls/_index.axaml
+++ b/src/Ursa.Themes.Semi/Controls/_index.axaml
@@ -11,6 +11,7 @@
+
diff --git a/src/Ursa/Controls/MessageBox/MessageBox.cs b/src/Ursa/Controls/MessageBox/MessageBox.cs
index 0558ec1..eccf256 100644
--- a/src/Ursa/Controls/MessageBox/MessageBox.cs
+++ b/src/Ursa/Controls/MessageBox/MessageBox.cs
@@ -1,12 +1,28 @@
using Avalonia;
using Avalonia.Controls.ApplicationLifetimes;
-namespace Ursa.Controls.MessageBox;
+namespace Ursa.Controls;
public static class MessageBox
{
public static async Task ShowAsync(string message)
{
- var messageWindow = new MessageBoxWindow();
+ var messageWindow = new MessageBoxWindow()
+ {
+ Content = message
+ };
+ var lifetime = Application.Current?.ApplicationLifetime;
+ if (lifetime is IClassicDesktopStyleApplicationLifetime classLifetime)
+ {
+ var main = classLifetime.MainWindow;
+ if (main is null)
+ {
+ messageWindow.Show();
+ }
+ else
+ {
+ await messageWindow.ShowDialog(main);
+ }
+ }
}
}
\ No newline at end of file
diff --git a/src/Ursa/Controls/MessageBox/MessageBoxWindow.cs b/src/Ursa/Controls/MessageBox/MessageBoxWindow.cs
index da1613d..5d2dbef 100644
--- a/src/Ursa/Controls/MessageBox/MessageBoxWindow.cs
+++ b/src/Ursa/Controls/MessageBox/MessageBoxWindow.cs
@@ -1,7 +1,7 @@
using Avalonia.Controls;
using Avalonia.Platform;
-namespace Ursa.Controls.MessageBox;
+namespace Ursa.Controls;
public class MessageBoxWindow: Window
{
@@ -9,7 +9,6 @@ public class MessageBoxWindow: Window
static MessageBoxWindow()
{
- ExtendClientAreaChromeHintsProperty.OverrideDefaultValue(ExtendClientAreaChromeHints
- .NoChrome);
+
}
}
\ No newline at end of file