43 lines
1.6 KiB
C#
43 lines
1.6 KiB
C#
using System.Windows;
|
|
using System.Windows.Controls;
|
|
using HandyControl.Tools;
|
|
|
|
namespace HandyControl.Controls
|
|
{
|
|
public class RadioGroup : ItemsControl
|
|
{
|
|
protected override DependencyObject GetContainerForItemOverride() => new RadioButton();
|
|
|
|
protected override bool IsItemItsOwnContainerOverride(object item) => item is RadioButton;
|
|
|
|
public static readonly DependencyProperty OrientationProperty = DependencyProperty.Register(
|
|
"Orientation", typeof(Orientation), typeof(RadioGroup), new PropertyMetadata(default(Orientation)));
|
|
|
|
public Orientation Orientation
|
|
{
|
|
get => (Orientation)GetValue(OrientationProperty);
|
|
set => SetValue(OrientationProperty, value);
|
|
}
|
|
|
|
public static readonly DependencyProperty ItemStyleSelectorProperty = DependencyProperty.Register(
|
|
"ItemStyleSelector", typeof(StyleSelector), typeof(RadioGroup), new PropertyMetadata(new RadioGroupItemStyleSelector()));
|
|
|
|
public StyleSelector ItemStyleSelector
|
|
{
|
|
get => (StyleSelector)GetValue(ItemStyleSelectorProperty);
|
|
set => SetValue(ItemStyleSelectorProperty, value);
|
|
}
|
|
|
|
protected override void OnVisualChildrenChanged(DependencyObject visualAdded, DependencyObject visualRemoved)
|
|
{
|
|
base.OnVisualChildrenChanged(visualAdded, visualRemoved);
|
|
|
|
var count = Items.Count;
|
|
for (int i = 0; i < count; i++)
|
|
{
|
|
var item = (RadioButton)Items[i];
|
|
item.Style = ItemStyleSelector?.SelectStyle(item, this);
|
|
}
|
|
}
|
|
}
|
|
} |