Add search input delay of 200ms

This commit is contained in:
2023-07-14 13:09:24 +02:00
parent cb2534d678
commit c0e584143e
3 changed files with 23 additions and 0 deletions

@ -7,6 +7,7 @@ using System.Linq;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Threading;
using Xceed.Wpf.Toolkit;
namespace Elwig.Windows {
@ -225,6 +226,22 @@ namespace Elwig.Windows {
UpdateComboBox(ortInput);
}
protected static void InitializeDelayTimer(TextBox tb, Action<object, TextChangedEventArgs> handler) {
var timer = new DispatcherTimer {
Interval = TimeSpan.FromMilliseconds(250)
};
timer.Tick += (object? sender, EventArgs evt) => {
timer.Stop();
var (oSender, oEvent) = ((object, TextChangedEventArgs))timer.Tag;
handler(oSender, oEvent);
};
tb.TextChanged += (object sender, TextChangedEventArgs evt) => {
timer.Stop();
timer.Tag = (sender, evt);
timer.Start();
};
}
protected bool InputTextChanged(TextBox input, Func<TextBox, bool, ValidationResult> checker) {
return InputTextChanged(input, (tb, required, ctx) => checker(tb, required));
}