From 428e80f9ac654dc0913faf7d60378d4383629de8 Mon Sep 17 00:00:00 2001 From: yyc12345 Date: Sat, 11 Apr 2026 21:33:15 +0800 Subject: [PATCH] feat: add icon group box custom control --- .../Frontend/Widgets/IconGroupBox.cs | 42 +++++++++++++++++++ .../Frontend/Widgets/IconGroupBox.xaml | 22 ++++++++++ 2 files changed, 64 insertions(+) create mode 100644 BallanceTasEditor/BallanceTasEditor/Frontend/Widgets/IconGroupBox.cs create mode 100644 BallanceTasEditor/BallanceTasEditor/Frontend/Widgets/IconGroupBox.xaml diff --git a/BallanceTasEditor/BallanceTasEditor/Frontend/Widgets/IconGroupBox.cs b/BallanceTasEditor/BallanceTasEditor/Frontend/Widgets/IconGroupBox.cs new file mode 100644 index 0000000..af06571 --- /dev/null +++ b/BallanceTasEditor/BallanceTasEditor/Frontend/Widgets/IconGroupBox.cs @@ -0,0 +1,42 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace BallanceTasEditor.Frontend.Widgets { + + public class IconGroupBox : GroupBox { + static IconGroupBox() { + DefaultStyleKeyProperty.OverrideMetadata(typeof(IconGroupBox), new FrameworkPropertyMetadata(typeof(IconGroupBox))); + } + + public string GroupBoxText { + get { return (string)GetValue(GroupBoxTextProperty); } + set { SetValue(GroupBoxTextProperty, value); } + } + + // Using a DependencyProperty as the backing store for GroupBoxText. This enables animation, styling, binding, etc... + public static readonly DependencyProperty GroupBoxTextProperty = + DependencyProperty.Register("GroupBoxText", typeof(string), typeof(IconGroupBox)); + + public ImageSource GroupBoxIcon { + get { return (ImageSource)GetValue(GroupBoxIconProperty); } + set { SetValue(GroupBoxIconProperty, value); } + } + + // Using a DependencyProperty as the backing store for GroupBoxIcon. This enables animation, styling, binding, etc... + public static readonly DependencyProperty GroupBoxIconProperty = + DependencyProperty.Register("GroupBoxIcon", typeof(ImageSource), typeof(IconGroupBox)); + + } +} diff --git a/BallanceTasEditor/BallanceTasEditor/Frontend/Widgets/IconGroupBox.xaml b/BallanceTasEditor/BallanceTasEditor/Frontend/Widgets/IconGroupBox.xaml new file mode 100644 index 0000000..f78fd33 --- /dev/null +++ b/BallanceTasEditor/BallanceTasEditor/Frontend/Widgets/IconGroupBox.xaml @@ -0,0 +1,22 @@ + + + +