From 2c0875ebd67326e0c67282967e3e809c69282fee Mon Sep 17 00:00:00 2001 From: NaBian <836904362@qq.com> Date: Sat, 27 Jun 2026 17:36:21 +0800 Subject: [PATCH] feat: Add Dialog styles and demo. --- .../Data/DemoInfo.json | 1 + .../MainWindow.axaml.cs | 11 +- .../UserControl/Basic/InteractiveDialog.axaml | 22 ++ .../Basic/InteractiveDialog.axaml.cs | 14 ++ .../UserControl/Basic/TextDialog.axaml | 25 +++ .../UserControl/Basic/TextDialog.axaml.cs | 15 ++ .../Basic/TextDialogWithTimer.axaml | 35 +++ .../Basic/TextDialogWithTimer.axaml.cs | 44 ++++ .../UserControl/Controls/DialogDemo.axaml | 46 ++++ .../UserControl/Controls/DialogDemo.axaml.cs | 16 ++ .../Basic/InteractiveDialogViewModel.cs | 20 ++ .../ViewModel/Controls/DialogDemoViewModel.cs | 70 ++++++ .../ViewModel/ViewModelLocator.cs | 3 + .../Window/DialogDemoWindow.axaml | 29 +++ .../Window/DialogDemoWindow.axaml.cs | 19 ++ .../Controls/Dialog/Dialog.cs | 211 ++++++++++++++++++ .../Controls/Dialog/DialogContainer.cs | 8 + .../Themes/Styles/Dialog.axaml | 30 +++ .../Themes/Styles/MergedStyles.axaml | 1 + .../Tools/Extension/DialogExtension.cs | 77 +++++++ 20 files changed, 695 insertions(+), 2 deletions(-) create mode 100644 src/Avalonia/HandyControlDemo_Avalonia/UserControl/Basic/InteractiveDialog.axaml create mode 100644 src/Avalonia/HandyControlDemo_Avalonia/UserControl/Basic/InteractiveDialog.axaml.cs create mode 100644 src/Avalonia/HandyControlDemo_Avalonia/UserControl/Basic/TextDialog.axaml create mode 100644 src/Avalonia/HandyControlDemo_Avalonia/UserControl/Basic/TextDialog.axaml.cs create mode 100644 src/Avalonia/HandyControlDemo_Avalonia/UserControl/Basic/TextDialogWithTimer.axaml create mode 100644 src/Avalonia/HandyControlDemo_Avalonia/UserControl/Basic/TextDialogWithTimer.axaml.cs create mode 100644 src/Avalonia/HandyControlDemo_Avalonia/UserControl/Controls/DialogDemo.axaml create mode 100644 src/Avalonia/HandyControlDemo_Avalonia/UserControl/Controls/DialogDemo.axaml.cs create mode 100644 src/Avalonia/HandyControlDemo_Avalonia/ViewModel/Basic/InteractiveDialogViewModel.cs create mode 100644 src/Avalonia/HandyControlDemo_Avalonia/ViewModel/Controls/DialogDemoViewModel.cs create mode 100644 src/Avalonia/HandyControlDemo_Avalonia/Window/DialogDemoWindow.axaml create mode 100644 src/Avalonia/HandyControlDemo_Avalonia/Window/DialogDemoWindow.axaml.cs create mode 100644 src/Avalonia/HandyControl_Avalonia/Controls/Dialog/Dialog.cs create mode 100644 src/Avalonia/HandyControl_Avalonia/Controls/Dialog/DialogContainer.cs create mode 100644 src/Avalonia/HandyControl_Avalonia/Themes/Styles/Dialog.axaml create mode 100644 src/Avalonia/HandyControl_Avalonia/Tools/Extension/DialogExtension.cs diff --git a/src/Avalonia/HandyControlDemo_Avalonia/Data/DemoInfo.json b/src/Avalonia/HandyControlDemo_Avalonia/Data/DemoInfo.json index 99a09b72..37ca1e64 100644 --- a/src/Avalonia/HandyControlDemo_Avalonia/Data/DemoInfo.json +++ b/src/Avalonia/HandyControlDemo_Avalonia/Data/DemoInfo.json @@ -42,6 +42,7 @@ "group": true, "demoItemList": [ [ "ConfettiCannon", "ConfettiCannonDemo", "Brush.Favorite", "", "Interacting" ], + [ "Dialog", "DialogDemo", "Brush.Dialog", "", "Feedback" ], [ "Gravatar", "GravatarDemo", "Brush.User", "", "DataDisplay" ], [ "ButtonGroup", "ButtonGroupDemo", "Brush.ButtonGroup", "", "Button" ], [ "ProgressButton", "ProgressButtonDemo", "Brush.ProgressBarStatusBar8", "", "Button" ], diff --git a/src/Avalonia/HandyControlDemo_Avalonia/MainWindow.axaml.cs b/src/Avalonia/HandyControlDemo_Avalonia/MainWindow.axaml.cs index c0972560..c58fa935 100644 --- a/src/Avalonia/HandyControlDemo_Avalonia/MainWindow.axaml.cs +++ b/src/Avalonia/HandyControlDemo_Avalonia/MainWindow.axaml.cs @@ -1,13 +1,20 @@ using Avalonia.Controls; using Avalonia.Interactivity; +using HandyControl.Controls; +using HandyControlDemo.Data; using HandyControlDemo.UserControl; using HandyControlDemo.ViewModel; namespace HandyControlDemo; -public partial class MainWindow : Window +public partial class MainWindow : Avalonia.Controls.Window { - public MainWindow() => InitializeComponent(); + public MainWindow() + { + InitializeComponent(); + + Dialog.SetToken(this, MessageToken.MainWindow); + } protected override void OnLoaded(RoutedEventArgs e) { diff --git a/src/Avalonia/HandyControlDemo_Avalonia/UserControl/Basic/InteractiveDialog.axaml b/src/Avalonia/HandyControlDemo_Avalonia/UserControl/Basic/InteractiveDialog.axaml new file mode 100644 index 00000000..52a6ead6 --- /dev/null +++ b/src/Avalonia/HandyControlDemo_Avalonia/UserControl/Basic/InteractiveDialog.axaml @@ -0,0 +1,22 @@ + + + + + + + +