Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Windows phone 8延迟输入验证_C#_Validation_Windows Phone 8 - Fatal编程技术网

C# Windows phone 8延迟输入验证

C# Windows phone 8延迟输入验证,c#,validation,windows-phone-8,C#,Validation,Windows Phone 8,在将数据发送到API服务器之前,我想验证几个输入框。我想在您键入时进行验证,但如果我一直告诉您您的用户名太短,而您刚刚开始键入它,这会让人恼火。我也不想在每次按键时都重新验证,因为下一次按键会使它失效 我在Android上做的是,我有一个处理程序,其中有许多验证代码,每个代码对应一个需要验证的字段。每次该字段更改时,我都会清除队列中具有匹配字段ID的所有消息,并以750ms的延迟将新消息放入队列。750ms启动后,将调用我的处理程序对与消息ID关联的字段执行验证。这允许我仅在用户停止在该字段中键

在将数据发送到API服务器之前,我想验证几个输入框。我想在您键入时进行验证,但如果我一直告诉您您的用户名太短,而您刚刚开始键入它,这会让人恼火。我也不想在每次按键时都重新验证,因为下一次按键会使它失效

我在Android上做的是,我有一个
处理程序
,其中有许多验证代码,每个代码对应一个需要验证的字段。每次该字段更改时,我都会清除队列中具有匹配字段ID的所有消息,并以750ms的延迟将新消息放入队列。750ms启动后,将调用我的处理程序对与消息ID关联的字段执行验证。这允许我仅在用户停止在该字段中键入至少750ms后执行验证。这也意味着如果用户键入10个字符 在750ms暂停之前,我只验证一次

在Windows Phone 8(C#)上有推荐的方法吗

我基本上需要一种低开销的方式来排队等待任务的延迟执行,并能够取消/重新安排任务

大多数验证发生在设备上,可以在UI线程上执行,但需要针对服务器验证一个字段,因此它必须在BG线程上运行(例如,此用户名可用吗?)。

如果将文本框(文本)绑定到视图模型中的属性,则默认情况下,在文本框失去焦点之前不会进行绑定


因此,如果您使用的是推荐的绑定技术,则可以在更新视图模型中的属性时调用验证代码。

问题在于,在用户离开文本框之前,不会进行任何验证。设想一个注册页面,默认情况下该按钮处于禁用状态。用户填写这些框并保留在最后一个输入框中。除非用户离开该字段,否则该按钮永远不会启用。然后,唯一的选项变成
LostFocus
事件,这将触发上面提到的太多验证事件。您可以将LostFocus更改为PropertyChanged,但这将导致您进入初始状态