我有一个Textbox
,它有一个KeyDown
事件。该事件与ViewModel中的事件处理程序绑定。下面是示例代码:KeyDown事件的延迟计时器
<TextBox x:Name="textBox" Text="{Binding TextBoxText, UpdateSourceTrigger=PropertyChanged}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="KeyDown">
<cmd:EventToCommand Command="{Binding Path=TextBoxKeyDownEvent}" PassEventArgsToCommand="True" />
</i:EventTrigger>
</i:Interaction.Triggers>
<TextBox.InputBindings>
这是事实,一旦用户开始在texbox写作,在视图模型后端调用事件处理程序。但我不想为每个KeyDown操作调用事件处理程序。我想在用户开始在文本框中输入并停止至少N毫秒时调用事件处理函数。这意味着我需要为事件设置一个延迟计时器。任何人都可以请指导我如何在MVVM中实现这一点?
感谢您的建议。但是我无法在TextProperty Change事件中使用它。因为文本可以由程序在内部进行更改。所以这里的事件处理程序只有在文字变化通过写入才会发生。这就是为什么我需要与keydown事件合作。 – ifti24 2014-09-27 14:10:38
@ ifti24请参阅我的编辑 – 2014-09-27 14:15:16
我想我没有让你明白目的。我有一个TextBox,并且在每个Keypress的TextBox中都有一个命令绑定。 Binded方法调用视图和视图从数据库中获取数据。但我不希望每个按键都会调用绑定的方法。我想,如果用户停止键入一定的时间(如500毫秒),只有绑定的方法将被调用。 – ifti24 2014-09-27 14:42:23