在AutoCompleteTextBox中键入文本后添加延迟以延迟显示搜索结果

时间:2018-12-20 19:52:46

标签: c# wpf

我正在尝试增加一秒的延迟,因为用户在搜索框中输入要搜索的单词,而不是在输入时不断更新。 我知道有一个“延迟”关键字可以使用,但这需要将值硬编码到xaml文件中。

我希望能够从配置文件中读取延迟间隔。我已经在Settings.settings中定义了一个延迟值,并希望能够执行以下操作;

在xaml文件中,我有如下内容:

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

我希望能够像代码中所示的那样从配置文件中设置延迟。

我无法设置它,并且对C#非常陌生。有人可以指导我如何设置延迟而不进行硬编码。当前的方法正在失败。 :(

谢谢。

1 个答案:

答案 0 :(得分:0)

尝试这个答案:https://stackoverflow.com/a/845033/4117068

基本上 使用yourNamespace.Properties声明XML名称空间

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:Name

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

然后在后面的代码中。 在构造函数中的InitializeComponent();之后;获取文本框的绑定,然后像下面这样设置Delay:

BindingExpression bindingExpression = yourTextBox.GetBindingExpression(TextBox.TextProperty); 
Binding parentBinding = bindingExpression.ParentBinding;
parentBinding.Delay = Properties.Settings.Default.DelayValue;
yourTextBox.SetBinding(TextBox.TextProperty, parentBinding);