diff --git a/src/Shared/HandyControl_Shared/Controls/Button/ButtonGroup.cs b/src/Shared/HandyControl_Shared/Controls/Button/ButtonGroup.cs index 423e2f5d9..5f2eef260 100644 --- a/src/Shared/HandyControl_Shared/Controls/Button/ButtonGroup.cs +++ b/src/Shared/HandyControl_Shared/Controls/Button/ButtonGroup.cs @@ -28,13 +28,43 @@ public LinearLayout Layout set => SetValue(LayoutProperty, value); } - protected override void OnRender(DrawingContext drawingContext) + protected override void OnRender(DrawingContext drawingContext) { var count = Items.Count; for (var i = 0; i < count; i++) { - var item = (ButtonBase) Items[i]; - item.Style = ItemContainerStyleSelector?.SelectStyle(item, this); + if (this.GetButtonBaseByIndex(i) is ButtonBase buttonBase) + { + buttonBase.Style = ItemContainerStyleSelector?.SelectStyle(Items[i], this); + } } } + +} + +public static class ButtonGroupExtensions +{ + public static ButtonBase GetButtonBaseByIndex(this ButtonGroup buttonGroup, int index) + { + return GetButtonBaseByItem(buttonGroup, buttonGroup.Items[index]); + } + + public static ButtonBase GetButtonBaseByItem(this ButtonGroup buttonGroup, object item) + { + if (item is ButtonBase buttonBase) + { + return buttonBase; + } + var container = buttonGroup.ItemContainerGenerator.ContainerFromItem(item); + + if (container is ButtonBase buttonBase2) + { + return buttonBase2; + } + else if (container != null && VisualTreeHelper.GetChildrenCount(container) > 0 && VisualTreeHelper.GetChild(container, 0) is ButtonBase buttonBase3) + { + return buttonBase3; + } + return null; + } } diff --git a/src/Shared/HandyControl_Shared/Tools/StyleSelector/ButtonGroupItemStyleSelector.cs b/src/Shared/HandyControl_Shared/Tools/StyleSelector/ButtonGroupItemStyleSelector.cs index 6dca25eba..f82aa404e 100644 --- a/src/Shared/HandyControl_Shared/Tools/StyleSelector/ButtonGroupItemStyleSelector.cs +++ b/src/Shared/HandyControl_Shared/Tools/StyleSelector/ButtonGroupItemStyleSelector.cs @@ -34,17 +34,17 @@ public class ButtonGroupItemStyleSelector : StyleSelector [ResourceToken.ToggleButtonGroupItemDefault] = ResourceHelper.GetResourceInternal