Добавление задержки после текста, набранного в AutoCompleteTextBox, чтобы задержать показ результатов поиска - PullRequest
0 голосов
/ 20 декабря 2018

Я пытаюсь добавить задержку в одну секунду, так как пользователь печатает слово для поиска в окне поиска, а не обновляет его постоянно, пока он печатает.Я знаю, что есть ключевое слово «Задержка», которое можно использовать, но для этого необходимо жестко закодировать значение в файл xaml.

Я хочу иметь возможность прочитать интервал задержки из файла конфигурации.Я определил значение задержки в Settings.settings и хочу иметь возможность сделать что-то вроде следующего:

В файле xaml у меня есть что-то вроде следующего:

Text="{Binding myText, Source={StaticResource queryView}, 
UpdateSourceTrigger=PropertyChanged, 
Delay=Property.Settings.Default.DelayValue}"

Я хочу иметь возможность установить задержку из файла конфигурации, как показано в коде.

Я не могу установить его и очень плохо знаком с C #.Может кто-нибудь подсказать мне, как можно установить задержку без ее жесткого кодирования.Текущий подход терпит неудачу.: (

Спасибо.

1 Ответ

0 голосов
/ 20 декабря 2018

Попробуйте этот ответ: https://stackoverflow.com/a/845033/4117068

По существу, объявите пространство имен XML с yourNamespace.Properties

xmlns:properties="clr-namespace:YourNamespace.Properties"

Затем вызовите настройку с помощью

{x:Static properties:Settings.DelayValue}

Так что сВаш фрагмент кода выше должен выглядеть следующим образом:

Text="{Binding myText, Source={StaticResource queryView}, 
UpdateSourceTrigger=PropertyChanged, 
Delay={x:Static properties:Settings.DelayValue}}"

РЕДАКТИРОВАТЬ: Вы также можете сделать это из кода в файле xaml.cs.

Для этого, датьX: Имя для вашего TextBox

<TextBox x:Name="yourTextBox"  ... />

Затем в коде позади.В конструкторе после InitializeComponent ();Получите привязку textBox и установите задержку следующим образом:

BindingExpression bindingExpression = yourTextBox.GetBindingExpression(TextBox.TextProperty); 
Binding parentBinding = bindingExpression.ParentBinding;
parentBinding.Delay = Properties.Settings.Default.DelayValue;
yourTextBox.SetBinding(TextBox.TextProperty, parentBinding);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...