41 lines
1.3 KiB
C#
41 lines
1.3 KiB
C#
using System.Windows;
|
|
using System.Windows.Controls;
|
|
using System.Windows.Controls.Primitives;
|
|
using System.Windows.Media;
|
|
using HandyControl.Data;
|
|
|
|
namespace HandyControl.Controls;
|
|
|
|
public class ButtonGroup : ItemsControl
|
|
{
|
|
protected override bool IsItemItsOwnContainerOverride(object item) => item is Button or RadioButton or ToggleButton;
|
|
|
|
public static readonly DependencyProperty OrientationProperty = DependencyProperty.Register(
|
|
"Orientation", typeof(Orientation), typeof(ButtonGroup), new PropertyMetadata(default(Orientation)));
|
|
|
|
public Orientation Orientation
|
|
{
|
|
get => (Orientation) GetValue(OrientationProperty);
|
|
set => SetValue(OrientationProperty, value);
|
|
}
|
|
|
|
public static readonly DependencyProperty LayoutProperty = DependencyProperty.Register(
|
|
"Layout", typeof(LinearLayout), typeof(ButtonGroup), new PropertyMetadata(LinearLayout.Uniform));
|
|
|
|
public LinearLayout Layout
|
|
{
|
|
get => (LinearLayout) GetValue(LayoutProperty);
|
|
set => SetValue(LayoutProperty, value);
|
|
}
|
|
|
|
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);
|
|
}
|
|
}
|
|
}
|