feat: improve accessibility.

This commit is contained in:
rabbitism
2025-09-16 20:06:03 +08:00
parent 0173ee7c9c
commit d40c2c5c90
3 changed files with 19 additions and 10 deletions

View File

@@ -37,7 +37,7 @@
<ItemsPanelTemplate>
<u:WrapPanelWithTrailingItem>
<u:WrapPanelWithTrailingItem.TrailingItem>
<TextBox VerticalAlignment="Center" Theme="{DynamicResource TagInputTextBoxTheme}"/>
<TextBox VerticalAlignment="Center" MinWidth="24" Theme="{DynamicResource TagInputTextBoxTheme}"/>
</u:WrapPanelWithTrailingItem.TrailingItem>
</u:WrapPanelWithTrailingItem>
</ItemsPanelTemplate>

View File

@@ -637,6 +637,11 @@ public partial class MultiAutoCompleteBox : TemplatedControl, IInnerContentContr
if (e.Key == Key.Down
&& !this.IsAllowedXYNavigationMode(e.KeyDeviceType))
{
if (string.IsNullOrEmpty(TextBox?.Text))
{
UpdateTextValue(string.Empty, true);
}
RefreshView();
SetCurrentValue(IsDropDownOpenProperty, true);
e.Handled = true;
}
@@ -1101,7 +1106,7 @@ public partial class MultiAutoCompleteBox : TemplatedControl, IInnerContentContr
{
if (_popupHasOpened)
{
if (SelectionAdapter != null) SelectionAdapter.SelectedItem = null;
// if (SelectionAdapter != null) SelectionAdapter.SelectedItem = null;
if (DropDownPopup != null) DropDownPopup.IsOpen = false;
OnDropDownClosed(System.EventArgs.Empty);
}
@@ -1564,7 +1569,10 @@ public partial class MultiAutoCompleteBox : TemplatedControl, IInnerContentContr
/// <param name="e">The selection changed event data.</param>
private void OnAdapterSelectionChanged(object? sender, SelectionChangedEventArgs e)
{
SelectedItems?.Add(_adapter?.SelectedItem);
if (_valueBindingEvaluator is null) return;
UpdateTextValue(_valueBindingEvaluator?.GetDynamicValue(_adapter?.SelectedItem), false);
// SelectedItems?.Add(_adapter?.SelectedItem);
}
//TODO Check UpdateTextCompletion
@@ -1579,6 +1587,7 @@ public partial class MultiAutoCompleteBox : TemplatedControl, IInnerContentContr
// Completion will update the selected value
//UpdateTextCompletion(false);
SelectedItems?.Add(_adapter?.SelectedItem);
UpdateTextValue(string.Empty, false);
// Text should not be selected

View File

@@ -1,4 +1,5 @@
using System.Collections;
using System.Diagnostics;
using Avalonia;
using Avalonia.Controls;
using Avalonia.Controls.Primitives;
@@ -16,9 +17,6 @@ public class MultiAutoCompleteSelectionAdapter : ISelectionAdapter
/// </summary>
private SelectingItemsControl? _selector;
private object? _previewSelectedItem;
private object? _selectedItem;
/// <summary>
/// Initializes a new instance of the
/// <see cref="T:Avalonia.Controls.Utils.SelectingItemsControlSelectionAdapter" />
@@ -110,14 +108,13 @@ public class MultiAutoCompleteSelectionAdapter : ISelectionAdapter
/// <value>The selected item of the underlying selection adapter.</value>
public object? SelectedItem
{
get => _selectedItem;
get => SelectorControl?.SelectedItem;
set
{
IgnoringSelectionChanged = true;
if (SelectorControl != null)
{
_selectedItem = value;
SelectorControl.SelectedItem = value;
}
// Attempt to reset the scroll viewer's position
@@ -215,7 +212,9 @@ public class MultiAutoCompleteSelectionAdapter : ISelectionAdapter
private void OnSelectionChanged(object? sender, SelectionChangedEventArgs e)
{
if (IgnoringSelectionChanged) return;
_previewSelectedItem = SelectorControl?.SelectedItem;
// SelectedItem = SelectorControl?.SelectedItem;
SelectionChanged?.Invoke(this, e);
// _previewSelectedItem = SelectorControl?.SelectedItem;
}
/// <summary>
@@ -258,6 +257,7 @@ public class MultiAutoCompleteSelectionAdapter : ISelectionAdapter
/// </summary>
internal void OnCommit()
{
/*
if (_previewSelectedItem is null) return;
SelectedItem = _previewSelectedItem;
SelectionChanged?.Invoke(this,
@@ -267,6 +267,7 @@ public class MultiAutoCompleteSelectionAdapter : ISelectionAdapter
new List<object?> { SelectedItem }
)
);
*/
Commit?.Invoke(this, new RoutedEventArgs());
AfterAdapterAction();
}
@@ -292,7 +293,6 @@ public class MultiAutoCompleteSelectionAdapter : ISelectionAdapter
{
SelectorControl.SelectedItem = null;
SelectorControl.SelectedIndex = -1;
_previewSelectedItem = null;
}
IgnoringSelectionChanged = false;
}