feat: add button spinner infra.

This commit is contained in:
rabbitism
2023-01-21 00:40:47 +08:00
parent a9e1760dc5
commit 91aa3380aa
7 changed files with 96 additions and 0 deletions

View File

@@ -0,0 +1,33 @@
<UserControl
x:Class="Semi.Avalonia.Demo.Pages.ButtonSpinnerDemo"
xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
d:DesignHeight="450"
d:DesignWidth="800"
mc:Ignorable="d">
<StackPanel>
<ButtonSpinner
Height="30"
AllowSpin="{Binding #allowSpinCheck.IsChecked}"
ShowButtonSpinner="{Binding #showSpinCheck.IsChecked}"
Spin="OnSpin">
<TextBlock
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="Everest" />
</ButtonSpinner>
<ButtonSpinner
Height="30"
AllowSpin="{Binding #allowSpinCheck.IsChecked}"
ButtonSpinnerLocation="Left"
ShowButtonSpinner="{Binding #showSpinCheck.IsChecked}"
Spin="OnSpin">
<TextBlock
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="Everest" />
</ButtonSpinner>
</StackPanel>
</UserControl>

View File

@@ -0,0 +1,50 @@
using System;
using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
namespace Semi.Avalonia.Demo.Pages;
public partial class ButtonSpinnerDemo : UserControl
{
public ButtonSpinnerDemo()
{
InitializeComponent();
}
public void OnSpin(object sender, SpinEventArgs e)
{
var spinner = (ButtonSpinner)sender;
if (spinner.Content is TextBlock txtBox)
{
int value = Array.IndexOf(_mountains, txtBox.Text);
if (e.Direction == SpinDirection.Increase)
value++;
else
value--;
if (value < 0)
value = _mountains.Length - 1;
else if (value >= _mountains.Length)
value = 0;
txtBox.Text = _mountains[value];
}
}
private readonly string[] _mountains = new[]
{
"Everest",
"K2 (Mount Godwin Austen)",
"Kangchenjunga",
"Lhotse",
"Makalu",
"Cho Oyu",
"Dhaulagiri",
"Manaslu",
"Nanga Parbat",
"Annapurna"
};
}

View File

@@ -24,6 +24,9 @@
<TabItem Header="Button">
<pages:ButtonDemo />
</TabItem>
<TabItem Header="ButtonSpinner">
<pages:ButtonSpinnerDemo />
</TabItem>
<TabItem Header="CheckBox">
<pages:CheckBoxDemo />
</TabItem>