diff --git a/Bloxstrap/Resources/CustomBootstrapperSchema.json b/Bloxstrap/Resources/CustomBootstrapperSchema.json index b74f1f6..df53076 100644 --- a/Bloxstrap/Resources/CustomBootstrapperSchema.json +++ b/Bloxstrap/Resources/CustomBootstrapperSchema.json @@ -140,6 +140,17 @@ "Orientation": "Orientation" } }, + "Border": { + "SuperClass": "FrameworkElement", + "IsCreatable": true, + "Attributes": { + "Background": "Brush", + "BorderBrush": "Brush", + "BorderThickness": "Thickness", + "Padding": "Thickness", + "CornerRadius": "CornerRadius" + } + }, "RowDefinition": { "IsCreatable": true, "Attributes": { diff --git a/Bloxstrap/UI/Elements/Bootstrapper/CustomDialog.Creator.cs b/Bloxstrap/UI/Elements/Bootstrapper/CustomDialog.Creator.cs index 3b682a7..3092653 100644 --- a/Bloxstrap/UI/Elements/Bootstrapper/CustomDialog.Creator.cs +++ b/Bloxstrap/UI/Elements/Bootstrapper/CustomDialog.Creator.cs @@ -32,6 +32,7 @@ namespace Bloxstrap.UI.Elements.Bootstrapper ["Image"] = HandleXmlElement_Image, ["Grid"] = HandleXmlElement_Grid, ["StackPanel"] = HandleXmlElement_StackPanel, + ["Border"] = HandleXmlElement_Border, ["SolidColorBrush"] = HandleXmlElement_SolidColorBrush, ["ImageBrush"] = HandleXmlElement_ImageBrush, diff --git a/Bloxstrap/UI/Elements/Bootstrapper/CustomDialog.Elements.cs b/Bloxstrap/UI/Elements/Bootstrapper/CustomDialog.Elements.cs index f2c9bca..339003c 100644 --- a/Bloxstrap/UI/Elements/Bootstrapper/CustomDialog.Elements.cs +++ b/Bloxstrap/UI/Elements/Bootstrapper/CustomDialog.Elements.cs @@ -729,6 +729,37 @@ namespace Bloxstrap.UI.Elements.Bootstrapper return stackPanel; } + + private static Border HandleXmlElement_Border(CustomDialog dialog, XElement xmlElement) + { + var border = new Border(); + + ApplyBrush_UIElement(dialog, border, "Background", Border.BackgroundProperty, xmlElement); + ApplyBrush_UIElement(dialog, border, "BorderBrush", Border.BorderBrushProperty, xmlElement); + + object? borderThickness = GetThicknessFromXElement(xmlElement, "BorderThickness"); + if (borderThickness != null) + border.BorderThickness = (Thickness)borderThickness; + + object? padding = GetThicknessFromXElement(xmlElement, "Padding"); + if (padding != null) + border.Padding = (Thickness)padding; + + object? cornerRadius = GetCornerRadiusFromXElement(xmlElement, "CornerRadius"); + if (cornerRadius != null) + border.CornerRadius = (CornerRadius)cornerRadius; + + var children = xmlElement.Elements().Where(x => !x.Name.ToString().StartsWith("Border.")); + if (children.Any()) + { + if (children.Count() > 1) + throw new Exception("Border can only have one child"); + + border.Child = HandleXml(dialog, children.First()); + } + + return border; + } #endregion } }