Как сгруппировать свойства своего контрола

Имеется код, который создаёт новый контрол на основе стандартной кнопки. Там есть пара новых свойств, одно из которых CornerRound - которое отвечает за то, какие углы будут закруглены, однако в обозревателе свойств на вкладках конструкторов оно отображается некорректно.
Пример, как это должно выглядеть (Свойство Margin с несколькими вложенными полями):
Скрин поля Margin из стандартного TextBox

Пример, как это выглядит сейчас:
Скрин отображаемых свойств

Как видно, из скрина 2 группа CornerRound отображается просто как неизменяемое поле. Помогите это исправить.

Код:

    public struct CornerRound
    {
        private const bool defVal = true;
        public bool LeftUp { get; set; }
        public bool LeftDown { get; set; }
        public bool RightUp { get; set; }
        public bool RightDown { get; set; }
        private bool? all;
        public bool All { get => all ?? false; set { all = LeftUp = LeftDown = RightUp = RightDown = value; } }

        public CornerRound(bool leftUp = defVal, bool leftDown = defVal, bool rightUp = defVal, bool rightDown = defVal)
        {
            LeftUp = leftUp; LeftDown = leftDown; RightUp = rightUp; RightDown = rightDown;
            all = leftUp & leftDown & rightUp & rightDown;
        }
        public CornerRound(bool all = defVal) : this(all, all, all, all) { }
    }

    public partial class DP_FlatButton : Button
    {
        private int borderSize = 0;
        private int borderRadius = 0;
        private Color borderColor = Color.Black;
        public CornerRound cornerRound = new CornerRound(true);

        [Category("DP Custom UI")]
        public int BorderSize
        {
            get => borderSize;
            set
            {
                borderSize = value;
                this.Invalidate();
            }
        }
        [Category("DP Custom UI")]
        public int BorderRadius
        {
            get => borderRadius;
            set
            {
                borderRadius = value;
                this.Invalidate();
            }
        }
        [Category("DP Custom UI")]
        public Color BorderColor
        {
            get => borderColor;
            set
            {
                borderColor = value;
                this.Invalidate();
            }
        }
        [Category("DP Custom UI")]
        public CornerRound CornerRound { get => this.cornerRound; set => this.cornerRound = value; }
        [Category("DP Custom UI")]
        public Color TextColor { get => base.ForeColor; set => base.ForeColor = value; }
        [Category("DP Custom UI")]
        public Color BackgroundColor { get => base.BackColor; set => base.BackColor = value; }
    }

Ответы (0 шт):