diff --git a/src/Net_40/HandyControl_Net_40/Themes/Theme.xaml b/src/Net_40/HandyControl_Net_40/Themes/Theme.xaml
index 8b417c6b6..0f9c9cdee 100644
--- a/src/Net_40/HandyControl_Net_40/Themes/Theme.xaml
+++ b/src/Net_40/HandyControl_Net_40/Themes/Theme.xaml
@@ -11703,8 +11703,9 @@
-
-
+
+
+
@@ -11712,10 +11713,10 @@
-
+
-
+
@@ -11761,7 +11762,18 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
-
\ No newline at end of file
+
diff --git a/src/Shared/HandyControlDemo_Shared/UserControl/Controls/AutoCompleteTextBoxDemoCtl.xaml b/src/Shared/HandyControlDemo_Shared/UserControl/Controls/AutoCompleteTextBoxDemoCtl.xaml
index 3721593a7..20285bda3 100644
--- a/src/Shared/HandyControlDemo_Shared/UserControl/Controls/AutoCompleteTextBoxDemoCtl.xaml
+++ b/src/Shared/HandyControlDemo_Shared/UserControl/Controls/AutoCompleteTextBoxDemoCtl.xaml
@@ -5,6 +5,6 @@
xmlns:hc="https://handyorg.github.io/handycontrol"
DataContext="{Binding AutoCompleteTextBoxDemo, Source={StaticResource Locator}}">
-
+
diff --git a/src/Shared/HandyControlDemo_Shared/ViewModel/Controls/AutoCompleteTextBoxDemoViewModel.cs b/src/Shared/HandyControlDemo_Shared/ViewModel/Controls/AutoCompleteTextBoxDemoViewModel.cs
index f655aadc9..7b41a8388 100644
--- a/src/Shared/HandyControlDemo_Shared/ViewModel/Controls/AutoCompleteTextBoxDemoViewModel.cs
+++ b/src/Shared/HandyControlDemo_Shared/ViewModel/Controls/AutoCompleteTextBoxDemoViewModel.cs
@@ -1,6 +1,5 @@
using System.Collections.Generic;
using GalaSoft.MvvmLight;
-using HandyControl.Collections;
using HandyControlDemo.Data;
using HandyControlDemo.Service;
@@ -8,49 +7,10 @@ namespace HandyControlDemo.ViewModel;
public class AutoCompleteTextBoxDemoViewModel : ViewModelBase
{
- private string _searchText;
-
- public string SearchText
- {
- get => _searchText;
-#if NET40
- set
- {
- Set(nameof(SearchText), ref _searchText, value);
- FilterItems(value);
- }
-#else
- set
- {
- Set(ref _searchText, value);
- FilterItems(value);
- }
-#endif
- }
-
- public ManualObservableCollection Items { get; set; } = new();
-
- private readonly List _dataList;
+ public List Items { get; set; }
public AutoCompleteTextBoxDemoViewModel(DataService dataService)
{
- _dataList = dataService.GetDemoDataList(10);
- }
-
- private void FilterItems(string key)
- {
- Items.CanNotify = false;
-
- Items.Clear();
-
- foreach (var data in _dataList)
- {
- if (data.Name.ToLower().Contains(key.ToLower()))
- {
- Items.Add(data);
- }
- }
-
- Items.CanNotify = true;
+ Items = dataService.GetDemoDataList(10);
}
}
diff --git a/src/Shared/HandyControl_Shared/Controls/Input/AutoCompleteTextBox/AutoCompleteTextBox.cs b/src/Shared/HandyControl_Shared/Controls/Input/AutoCompleteTextBox/AutoCompleteTextBox.cs
index 178989dae..59419d88e 100644
--- a/src/Shared/HandyControl_Shared/Controls/Input/AutoCompleteTextBox/AutoCompleteTextBox.cs
+++ b/src/Shared/HandyControl_Shared/Controls/Input/AutoCompleteTextBox/AutoCompleteTextBox.cs
@@ -1,4 +1,5 @@
-using System.Windows;
+using System;
+using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using HandyControl.Data;
@@ -15,8 +16,6 @@ public class AutoCompleteTextBox : ComboBox
private System.Windows.Controls.TextBox _searchTextBox;
- private object _selectedItem;
-
static AutoCompleteTextBox()
{
TextProperty.OverrideMetadata(typeof(AutoCompleteTextBox), new FrameworkPropertyMetadata(default(string), FrameworkPropertyMetadataOptions.BindsTwoWayByDefault));
@@ -40,18 +39,14 @@ public override void OnApplyTemplate()
_searchTextBox.PreviewKeyDown += SearchTextBoxKeyDown;
_searchTextBox.TextChanged += SearchTextBoxTextChanged;
}
-
- UpdateTextBoxBySelectedItem(_selectedItem);
}
protected override void OnSelectionChanged(SelectionChangedEventArgs e)
{
- base.OnSelectionChanged(e);
-
if (e.AddedItems.Count > 0)
{
- _selectedItem = e.AddedItems[0];
- UpdateTextBoxBySelectedItem(_selectedItem);
+ var selectedItem = e.AddedItems[0];
+ UpdateTextBoxBySelectedItem(selectedItem);
}
}
@@ -61,7 +56,6 @@ protected override void OnSelectionChanged(SelectionChangedEventArgs e)
private void SearchTextBoxTextChanged(object sender, TextChangedEventArgs e)
{
- _selectedItem = null;
SelectedIndex = -1;
if (ignoreTextChanging)
@@ -78,6 +72,7 @@ private void SearchTextBoxTextChanged(object sender, TextChangedEventArgs e)
}
else if (_searchTextBox.IsFocused)
{
+ Items.Filter = FilterItem ?? DefaultFilter;
SetCurrentValue(IsDropDownOpenProperty, ValueBoxes.TrueBox);
}
}
@@ -152,7 +147,17 @@ private void SearchTextBoxGotFocus(object sender, RoutedEventArgs e)
{
if (!string.IsNullOrEmpty(Text))
{
+ Items.Filter = FilterItem ?? DefaultFilter;
SetCurrentValue(IsDropDownOpenProperty, ValueBoxes.TrueBox);
}
}
+
+
+ public Predicate