diff --git a/Source/LibationWinForms/AvaloniaUI/Controls/WheelComboBox.axaml b/Source/LibationWinForms/AvaloniaUI/Controls/WheelComboBox.axaml new file mode 100644 index 00000000..635aa2a8 --- /dev/null +++ b/Source/LibationWinForms/AvaloniaUI/Controls/WheelComboBox.axaml @@ -0,0 +1,5 @@ + + + diff --git a/Source/LibationWinForms/AvaloniaUI/Controls/WheelComboBox.axaml.cs b/Source/LibationWinForms/AvaloniaUI/Controls/WheelComboBox.axaml.cs new file mode 100644 index 00000000..4458e288 --- /dev/null +++ b/Source/LibationWinForms/AvaloniaUI/Controls/WheelComboBox.axaml.cs @@ -0,0 +1,35 @@ +using Avalonia; +using Avalonia.Controls; +using Avalonia.Input; +using Avalonia.Markup.Xaml; +using Avalonia.Styling; +using System; +using System.Collections; +using System.Linq; + +namespace LibationWinForms.AvaloniaUI.Controls +{ + public partial class WheelComboBox : ComboBox, IStyleable + { + Type IStyleable.StyleKey => typeof(ComboBox); + public WheelComboBox() + { + InitializeComponent(); + } + protected override void OnPointerWheelChanged(PointerWheelEventArgs e) + { + var dir = Math.Sign(e.Delta.Y); + if (dir == 1 && SelectedIndex > 0) + SelectedIndex--; + else if (dir == -1 && SelectedIndex < ItemCount - 1) + SelectedIndex++; + + base.OnPointerWheelChanged(e); + } + + private void InitializeComponent() + { + AvaloniaXamlLoader.Load(this); + } + } +} diff --git a/Source/LibationWinForms/AvaloniaUI/Views/Dialogs/BookDetailsDialog.axaml b/Source/LibationWinForms/AvaloniaUI/Views/Dialogs/BookDetailsDialog.axaml index 84aa0a8d..5ba6c079 100644 --- a/Source/LibationWinForms/AvaloniaUI/Views/Dialogs/BookDetailsDialog.axaml +++ b/Source/LibationWinForms/AvaloniaUI/Views/Dialogs/BookDetailsDialog.axaml @@ -10,7 +10,7 @@ Title="Book Details" Name="BookDetails" Icon="/AvaloniaUI/Assets/libation.ico"> - +