diff --git a/controlgallery/AtomUIGallery/ShowCases/Views/Feedback/ModalShowCase.axaml b/controlgallery/AtomUIGallery/ShowCases/Views/Feedback/ModalShowCase.axaml
index d9d725425..a0af3d9d8 100644
--- a/controlgallery/AtomUIGallery/ShowCases/Views/Feedback/ModalShowCase.axaml
+++ b/controlgallery/AtomUIGallery/ShowCases/Views/Feedback/ModalShowCase.axaml
@@ -100,14 +100,15 @@
Native Window:
-
+
+
-
+
Some descriptions
@@ -119,7 +120,7 @@
IsOpen="{Binding IsInformationMsgBoxOpened, Mode=TwoWay}"
Style="Information"
HostType="{Binding MessageBoxStyleCaseHostType}">
-
+
some messages...some messages...
some messages...some messages...
@@ -132,7 +133,7 @@
Style="Success"
HostType="{Binding MessageBoxStyleCaseHostType}"
IsOpen="{Binding IsSuccessMsgBoxOpened, Mode=TwoWay}">
-
+
some messages...some messages...
some messages...some messages...
@@ -145,7 +146,7 @@
Style="Error"
HostType="{Binding MessageBoxStyleCaseHostType}"
IsOpen="{Binding IsErrorMsgBoxOpened, Mode=TwoWay}">
-
+
some messages...some messages...
some messages...some messages...
@@ -158,14 +159,23 @@
Style="Warning"
HostType="{Binding MessageBoxStyleCaseHostType}"
IsOpen="{Binding IsWarningMsgBoxOpened, Mode=TwoWay}">
-
+
some messages...some messages...
some messages...some messages...
Warning
-
+
+
+
+
+ Confirm
+ Information
+ Success
+ Error
+ Warning
+
diff --git a/controlgallery/AtomUIGallery/ShowCases/Views/Feedback/ModalShowCase.axaml.cs b/controlgallery/AtomUIGallery/ShowCases/Views/Feedback/ModalShowCase.axaml.cs
index 577e3576a..32dfb1caf 100644
--- a/controlgallery/AtomUIGallery/ShowCases/Views/Feedback/ModalShowCase.axaml.cs
+++ b/controlgallery/AtomUIGallery/ShowCases/Views/Feedback/ModalShowCase.axaml.cs
@@ -259,7 +259,7 @@ public partial class ModalShowCase : ReactiveUserControl
// 鼠标会被卡死,强制刷新一次事件循环
await Dispatcher.UIThread.InvokeAsync(() => { }, DispatcherPriority.Background);
var content = BuildDialogContent();
- var options = new DialogOptions()
+ var options = new DialogOptions
{
IsModal = true,
Title = "Basic Modal",
@@ -272,7 +272,7 @@ public partial class ModalShowCase : ReactiveUserControl
VerticalOffset = new Dimension(30, DimensionUnitType.Percentage),
MinWidth = 400
};
- Dialog.ShowDialog(content, null, options);
+ await Dialog.ShowDialogAsync(content, null, options);
}
private async void HandleOpenWindowDialogButtonClick(object? sender, RoutedEventArgs e)
@@ -280,7 +280,7 @@ public partial class ModalShowCase : ReactiveUserControl
// 鼠标会被卡死,强制刷新一次事件循环
await Dispatcher.UIThread.InvokeAsync(() => { }, DispatcherPriority.Background);
var content = BuildDialogContent();
- var options = new DialogOptions()
+ var options = new DialogOptions
{
IsModal = true,
Title = "Basic Modal",
@@ -294,14 +294,14 @@ public partial class ModalShowCase : ReactiveUserControl
VerticalOffset = new Dimension(30, DimensionUnitType.Percentage),
MinWidth = 400
};
- Dialog.ShowDialog(content, null, options);
+ await Dialog.ShowDialogAsync(content, null, options);
}
private async void HandleOpenCustomViewDialogButtonClick(object? sender, RoutedEventArgs e)
{
// 鼠标会被卡死,强制刷新一次事件循环
await Dispatcher.UIThread.InvokeAsync(() => { }, DispatcherPriority.Background);
- var options = new DialogOptions()
+ var options = new DialogOptions
{
IsModal = true,
Title = "Basic Modal",
@@ -318,30 +318,124 @@ public partial class ModalShowCase : ReactiveUserControl
var viewModel = new ModalUserControlViewModel()
{
Name = "AtomUI",
- Age = 2
+ Age = 2
};
Dialog.ShowDialog(viewModel, options);
}
private Control BuildDialogContent()
{
- var stackPanel = new StackPanel()
+ var stackPanel = new StackPanel
{
Orientation = Orientation.Vertical,
Spacing = 5
};
- stackPanel.Children.Add(new TextBlock()
+ stackPanel.Children.Add(new TextBlock
{
Text = "Some contents..."
});
- stackPanel.Children.Add(new TextBlock()
+ stackPanel.Children.Add(new TextBlock
{
Text = "Some contents..."
});
- stackPanel.Children.Add(new TextBlock()
+ stackPanel.Children.Add(new TextBlock
{
Text = "Some contents..."
});
return stackPanel;
}
+
+ private async void HandleCreateConfirmMessageBox(object? sender, RoutedEventArgs e)
+ {
+ await Dispatcher.UIThread.InvokeAsync(() => { }, DispatcherPriority.Background);
+ var content = BuildMessageBoxContent();
+ var options = new MessageBoxOptions()
+ {
+ IsModal = true,
+ Title = "Do you want to delete these items?",
+ IsDragMovable = true,
+ IsCenterOnStartup = true,
+ Style = MessageBoxStyle.Confirm
+ };
+ await MessageBox.ShowMessageAsync(content, null, options);
+ }
+
+ private async void HandleCreateInformationMessageBox(object? sender, RoutedEventArgs e)
+ {
+ await Dispatcher.UIThread.InvokeAsync(() => { }, DispatcherPriority.Background);
+ var content = BuildMessageBoxContent();
+ var options = new MessageBoxOptions()
+ {
+ IsModal = true,
+ Title = "This is a notification message",
+ IsDragMovable = true,
+ IsCenterOnStartup = true,
+ Style = MessageBoxStyle.Information
+ };
+ await MessageBox.ShowMessageAsync(content, null, options);
+ }
+
+ private async void HandleCreateSuccessMessageBox(object? sender, RoutedEventArgs e)
+ {
+ await Dispatcher.UIThread.InvokeAsync(() => { }, DispatcherPriority.Background);
+ var content = BuildMessageBoxContent();
+ var options = new MessageBoxOptions()
+ {
+ IsModal = true,
+ Title = "Operation successful",
+ IsDragMovable = true,
+ IsCenterOnStartup = true,
+ Style = MessageBoxStyle.Success
+ };
+ await MessageBox.ShowMessageAsync(content, null, options);
+ }
+
+ private async void HandleCreateErrorMessageBox(object? sender, RoutedEventArgs e)
+ {
+ await Dispatcher.UIThread.InvokeAsync(() => { }, DispatcherPriority.Background);
+ var content = BuildMessageBoxContent();
+ var options = new MessageBoxOptions()
+ {
+ IsModal = true,
+ Title = "This is an error message",
+ IsDragMovable = true,
+ IsCenterOnStartup = true,
+ Style = MessageBoxStyle.Error
+ };
+ await MessageBox.ShowMessageAsync(content, null, options);
+ }
+
+ private async void HandleCreateWarningMessageBox(object? sender, RoutedEventArgs e)
+ {
+ await Dispatcher.UIThread.InvokeAsync(() => { }, DispatcherPriority.Background);
+ var content = BuildMessageBoxContent();
+ var options = new MessageBoxOptions()
+ {
+ IsModal = true,
+ Title = "This is a warning message",
+ IsDragMovable = true,
+ IsCenterOnStartup = true,
+ Style = MessageBoxStyle.Warning
+ };
+ await MessageBox.ShowMessageAsync(content, null, options);
+ }
+
+ private Control BuildMessageBoxContent()
+ {
+ var stackPanel = new StackPanel
+ {
+ Orientation = Orientation.Vertical,
+ Spacing = 5
+ };
+ stackPanel.Children.Add(new TextBlock
+ {
+ Text = "some messages...some messages..."
+ });
+ stackPanel.Children.Add(new TextBlock
+ {
+ Text = "some messages...some messages..."
+ });
+ return stackPanel;
+ }
+
}
\ No newline at end of file
diff --git a/src/AtomUI.Desktop.Controls/Dialog/Dialog.StaticAPI.cs b/src/AtomUI.Desktop.Controls/Dialog/Dialog.StaticAPI.cs
index 108d81436..e278b197b 100644
--- a/src/AtomUI.Desktop.Controls/Dialog/Dialog.StaticAPI.cs
+++ b/src/AtomUI.Desktop.Controls/Dialog/Dialog.StaticAPI.cs
@@ -1,6 +1,5 @@
-using Avalonia;
using Avalonia.Controls;
-using Avalonia.Controls.ApplicationLifetimes;
+using Avalonia.Threading;
using Avalonia.VisualTree;
namespace AtomUI.Desktop.Controls;
@@ -36,7 +35,7 @@ public partial class Dialog
return result;
}
- public static Task