From 87bb47b4e14871e0effe7af74c241d276b5f03a9 Mon Sep 17 00:00:00 2001 From: rabbitism Date: Thu, 25 Jan 2024 13:19:48 +0800 Subject: [PATCH] feat: introduce class helper here. --- demo/Ursa.Demo/Dialogs/PlainDialog.axaml | 4 +- src/Ursa.Themes.Semi/Behaviors/ClassHelper.cs | 24 ++++ src/Ursa.Themes.Semi/Controls/Dialog.axaml | 128 +++++++++++++++--- ...essageBoxWindow.axaml => MessageBox.axaml} | 0 src/Ursa.Themes.Semi/Controls/_index.axaml | 2 +- 5 files changed, 136 insertions(+), 22 deletions(-) create mode 100644 src/Ursa.Themes.Semi/Behaviors/ClassHelper.cs rename src/Ursa.Themes.Semi/Controls/{MessageBoxWindow.axaml => MessageBox.axaml} (100%) diff --git a/demo/Ursa.Demo/Dialogs/PlainDialog.axaml b/demo/Ursa.Demo/Dialogs/PlainDialog.axaml index f5688f2..787fd92 100644 --- a/demo/Ursa.Demo/Dialogs/PlainDialog.axaml +++ b/demo/Ursa.Demo/Dialogs/PlainDialog.axaml @@ -3,8 +3,10 @@ xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450" + Padding="24" + Background="Aqua" x:Class="Ursa.Demo.Dialogs.PlainDialog"> - + diff --git a/src/Ursa.Themes.Semi/Behaviors/ClassHelper.cs b/src/Ursa.Themes.Semi/Behaviors/ClassHelper.cs new file mode 100644 index 0000000..002c71f --- /dev/null +++ b/src/Ursa.Themes.Semi/Behaviors/ClassHelper.cs @@ -0,0 +1,24 @@ +using Avalonia; + +namespace Ursa.Themes.Semi; + +internal class ClassHelper: AvaloniaObject +{ + static ClassHelper() + { + ClassesProperty.Changed.AddClassHandler(OnClassesChanged); + } + + public static readonly AttachedProperty ClassesProperty = + AvaloniaProperty.RegisterAttached("Classes"); + + public static void SetClasses(AvaloniaObject obj, string value) => obj.SetValue(ClassesProperty, value); + public static string GetClasses(AvaloniaObject obj) => obj.GetValue(ClassesProperty); + + private static void OnClassesChanged(StyledElement sender, AvaloniaPropertyChangedEventArgs value) + { + IEnumerable classes = value.GetNewValue>(); + sender.Classes.Clear(); + sender.Classes.AddRange(classes); + } +} \ No newline at end of file diff --git a/src/Ursa.Themes.Semi/Controls/Dialog.axaml b/src/Ursa.Themes.Semi/Controls/Dialog.axaml index 0d0b285..ae173cc 100644 --- a/src/Ursa.Themes.Semi/Controls/Dialog.axaml +++ b/src/Ursa.Themes.Semi/Controls/Dialog.axaml @@ -1,12 +1,14 @@  - + + @@ -92,6 +95,7 @@ + @@ -107,23 +112,29 @@ Name="PART_ContentPresenter" Grid.Row="1" Content="{TemplateBinding Content}" /> - + - +