feat: working on selection. add a demo to AutoCompleteBoxDemo to show the keyboard navigation actually changed selection.

This commit is contained in:
rabbitism
2025-09-14 10:57:37 +08:00
parent 8ec815c885
commit 4f93801e77
5 changed files with 15 additions and 1 deletions

View File

@@ -23,10 +23,14 @@
</Style>
</StackPanel.Styles>
<TextBlock Text="{Binding #box.((viewModels:StateData)SelectedItem).Name}" />
<u:AutoCompleteBox
Name="box"
Watermark="Please select a State"
Classes="ClearButton"
ValueMemberBinding="{ReflectionBinding Name}" />
<u:AutoCompleteBox
Classes="Large"
ValueMemberBinding="{ReflectionBinding Name}" />

View File

@@ -10,6 +10,7 @@
<StackPanel Spacing="20">
<TextBlock Text="Multi-AutoCompleteBox"/>
<u:MultiAutoCompleteBox ItemsSource="{Binding Items}"
SelectedItems="{Binding SelectedItems}"
ItemFilter="{Binding FilterPredicate }"
FilterMode="Custom">
<u:MultiAutoCompleteBox.ItemTemplate>
@@ -22,6 +23,11 @@
</TextBlock>
</DataTemplate>
</u:MultiAutoCompleteBox.ItemTemplate>
<u:MultiAutoCompleteBox.SelectedItemTemplate>
<DataTemplate DataType="vm:ControlData">
<TextBlock Text="{Binding MenuHeader}" />
</DataTemplate>
</u:MultiAutoCompleteBox.SelectedItemTemplate>
</u:MultiAutoCompleteBox>
</StackPanel>
</UserControl>

View File

@@ -8,10 +8,12 @@ namespace Ursa.Demo.ViewModels;
public class MultiAutoCompleteBoxDemoViewModel: ObservableObject
{
public ObservableCollection<ControlData> Items { get; set; }
public ObservableCollection<ControlData> SelectedItems { get; set; }
public AutoCompleteFilterPredicate<object> FilterPredicate { get; set; }
public MultiAutoCompleteBoxDemoViewModel()
{
SelectedItems = new ObservableCollection<ControlData>();
Items = new ObservableCollection<ControlData>
{
new() { MenuHeader = "Button Group", Chinese = "按钮组" },

View File

@@ -24,7 +24,7 @@
<u:ClosableTag
Content="{Binding .}"
Command="{Binding $parent[u:TagInput].Close}"
ContentTemplate="{TemplateBinding SelectedItemTemplate}"
ContentTemplate="{Binding $parent[u:MultiAutoCompleteBox].SelectedItemTemplate}"
></u:ClosableTag>
</DataTemplate>
</ItemsControl.ItemTemplate>

View File

@@ -1630,6 +1630,8 @@ public partial class MultiAutoCompleteBox : TemplatedControl, IInnerContentContr
{
// TODO set selection.
// SetCurrentValue(SelectedItemProperty, _adapter!.SelectedItem);
SelectedItems?.Add(_adapter?.SelectedItem);
// UpdateTextValue(null);
}
//TODO Check UpdateTextCompletion