我正在尝试增加一秒的延迟,因为用户在搜索框中输入要搜索的单词,而不是在输入时不断更新。 我知道有一个“延迟”关键字可以使用,但这需要将值硬编码到xaml文件中。
我希望能够从配置文件中读取延迟间隔。我已经在Settings.settings中定义了一个延迟值,并希望能够执行以下操作;
在xaml文件中,我有如下内容:
Text="{Binding myText, Source={StaticResource queryView},
UpdateSourceTrigger=PropertyChanged,
Delay=Property.Settings.Default.DelayValue}"
我希望能够像代码中所示的那样从配置文件中设置延迟。
我无法设置它,并且对C#非常陌生。有人可以指导我如何设置延迟而不进行硬编码。当前的方法正在失败。 :(
谢谢。
答案 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);