feat: Add ButtonGroup control and styles.

This commit is contained in:
NaBian committed 2026-06-13 19:21:15 +08:00
1 parent 2ac7dfaf96
commit ee5c47a7cd
9 files changed
+690 -36

No files matched your search

@@ -0,0 +1,73 @@
<UserControl x:Class="HandyControlDemo.UserControl.ButtonGroupDemo"
xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:hc="https://handyorg.github.io/handycontrol"
xmlns:langs="clr-namespace:HandyControlDemo.Properties.Langs"
Background="{DynamicResource RegionBrush}">
<TransitioningContentControl>
<ScrollViewer>
<hc:UniformSpacingPanel Margin="32" Spacing="32" ChildWrapping="Wrap" VerticalAlignment="Center">
<hc:UniformSpacingPanel Spacing="32" Orientation="Vertical">
<hc:ButtonGroup>
<RadioButton Content="{x:Static langs:Lang.RadioButton}" IsChecked="True"/>
<RadioButton Content="{x:Static langs:Lang.RadioButton}"/>
<RadioButton Content="{x:Static langs:Lang.RadioButton}"/>
<RadioButton Content="{x:Static langs:Lang.RadioButton}"/>
<RadioButton Content="{x:Static langs:Lang.RadioButton}"/>
</hc:ButtonGroup>
<hc:ButtonGroup>
<Button Content="{x:Static langs:Lang.Button}"/>
<Button Content="{x:Static langs:Lang.Button}"/>
<Button Content="{x:Static langs:Lang.Button}"/>
<Button Content="{x:Static langs:Lang.Button}"/>
<Button Content="{x:Static langs:Lang.Button}"/>
</hc:ButtonGroup>
<hc:ButtonGroup Theme="{StaticResource ButtonGroupSolid}">
<ToggleButton Content="{x:Static langs:Lang.ToggleButton}"/>
<ToggleButton Content="{x:Static langs:Lang.ToggleButton}"/>
<ToggleButton Content="{x:Static langs:Lang.ToggleButton}" IsChecked="True"/>
<ToggleButton Content="{x:Static langs:Lang.ToggleButton}"/>
<ToggleButton Content="{x:Static langs:Lang.ToggleButton}"/>
</hc:ButtonGroup>
<hc:ButtonGroup>
<RadioButton Content="{x:Static langs:Lang.RadioButton}" IsChecked="True"/>
<RadioButton Content="{x:Static langs:Lang.RadioButton}"/>
<Button Content="{x:Static langs:Lang.Button}"/>
<ToggleButton Content="{x:Static langs:Lang.ToggleButton}"/>
<ToggleButton Content="{x:Static langs:Lang.ToggleButton}" IsChecked="True"/>
</hc:ButtonGroup>
</hc:UniformSpacingPanel>
<hc:UniformSpacingPanel Spacing="32" ChildWrapping="Wrap">
<hc:ButtonGroup Orientation="Vertical">
<RadioButton Content="{x:Static langs:Lang.RadioButton}" IsChecked="True"/>
<RadioButton Content="{x:Static langs:Lang.RadioButton}"/>
<RadioButton Content="{x:Static langs:Lang.RadioButton}"/>
<RadioButton Content="{x:Static langs:Lang.RadioButton}"/>
<RadioButton Content="{x:Static langs:Lang.RadioButton}"/>
</hc:ButtonGroup>
<hc:ButtonGroup Orientation="Vertical">
<Button Content="{x:Static langs:Lang.Button}"/>
<Button Content="{x:Static langs:Lang.Button}"/>
<Button Content="{x:Static langs:Lang.Button}"/>
<Button Content="{x:Static langs:Lang.Button}"/>
<Button Content="{x:Static langs:Lang.Button}"/>
</hc:ButtonGroup>
<hc:ButtonGroup Theme="{StaticResource ButtonGroupSolid}" Orientation="Vertical">
<ToggleButton Content="{x:Static langs:Lang.ToggleButton}"/>
<ToggleButton Content="{x:Static langs:Lang.ToggleButton}"/>
<ToggleButton Content="{x:Static langs:Lang.ToggleButton}" IsChecked="True"/>
<ToggleButton Content="{x:Static langs:Lang.ToggleButton}"/>
<ToggleButton Content="{x:Static langs:Lang.ToggleButton}"/>
</hc:ButtonGroup>
<hc:ButtonGroup Orientation="Vertical">
<RadioButton Content="{x:Static langs:Lang.RadioButton}" IsChecked="True"/>
<RadioButton Content="{x:Static langs:Lang.RadioButton}"/>
<Button Content="{x:Static langs:Lang.Button}"/>
<ToggleButton Content="{x:Static langs:Lang.ToggleButton}"/>
<ToggleButton Content="{x:Static langs:Lang.ToggleButton}" IsChecked="True"/>
</hc:ButtonGroup>
</hc:UniformSpacingPanel>
</hc:UniformSpacingPanel>
</ScrollViewer>
</TransitioningContentControl>
</UserControl>
@@ -0,0 +1,9 @@
namespace HandyControlDemo.UserControl;
public partial class ButtonGroupDemo : Avalonia.Controls.UserControl
{
public ButtonGroupDemo()
{
InitializeComponent();
}
}
@@ -4,44 +4,47 @@
xmlns:vm="clr-namespace:HandyControlDemo.ViewModel"
xmlns:data="clr-namespace:HandyControlDemo.Data"
xmlns:cv="clr-namespace:HandyControlDemo.Tools.Converter"
xmlns:langs="clr-namespace:HandyControlDemo.Properties.Langs"
x:Class="HandyControlDemo.UserControl.HoneycombPanelDemo"
x:DataType="vm:CardDemoViewModel"
Background="{DynamicResource RegionBrush}"
DataContext="{Binding CardDemo, Source={x:Static vm:ViewModelLocator.Instance}}">
<UserControl.Resources>
<cv:StringToBitmapConverter x:Key="StringToBitmap" />
</UserControl.Resources>
<Grid Margin="32">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition />
</Grid.RowDefinitions>
<StackPanel Orientation="Horizontal"
Spacing="8"
Margin="0,0,0,16">
<Button Command="{Binding AddItemCommand}" Content="Add" />
<Button Command="{Binding RemoveItemCommand}" Content="Remove" />
</StackPanel>
<ItemsControl Grid.Row="1"
HorizontalAlignment="Center"
VerticalAlignment="Center"
ItemsSource="{Binding DataList}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<hc:HoneycombPanel />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate DataType="data:CardModel">
<Border Width="60"
Height="60"
Margin="6"
CornerRadius="30"
ClipToBounds="True">
<Image Source="{Binding Content, Converter={StaticResource StringToBitmap}}"
Stretch="UniformToFill" />
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
<TransitioningContentControl>
<Grid Margin="32">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition />
</Grid.RowDefinitions>
<hc:ButtonGroup Margin="0,0,0,16">
<Button Command="{Binding AddItemCommand}" Content="{x:Static langs:Lang.AddItem}" />
<Button Command="{Binding RemoveItemCommand}" Content="{x:Static langs:Lang.RemoveItem}" />
</hc:ButtonGroup>
<Border Grid.Row="1" Padding="0" Theme="{StaticResource BorderRegion}">
<ItemsControl HorizontalAlignment="Center"
VerticalAlignment="Center"
ItemsSource="{Binding DataList}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<hc:HoneycombPanel />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate DataType="data:CardModel">
<Border Width="60"
Height="60"
Margin="6"
CornerRadius="30"
ClipToBounds="True">
<Image Source="{Binding Content, Converter={StaticResource StringToBitmap}}"
Stretch="UniformToFill" />
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Border>
</Grid>
</TransitioningContentControl>
</UserControl>