我使用James Montenagro的MVVMHelpers模型开发了Xamarin Forms App。我的页面之一是根据加载到应用程序中的表单的XML定义构建的动态创建的表单。然后,应用程序将创建必要的布局和字段。
当需要验证表单时,我的App遍历页面上创建的各种控件,并根据表单定义验证输入以确保表单已正确完成。一切正常,并通过“保存”按钮命令触发。问题是,在此过程中,应用看起来没有响应,需要花费几秒钟的时间。
没问题,我想只是添加
Acr.Userdialogs.Instance.Loading(“正在验证表单,请稍候”)
在进行验证以显示活动指标之前。但是,我已经尝试过并阅读了有关内容,但是由于我的验证在命令处理程序中都是同步的,并且用户界面没有更新,因此它当然不起作用。
我接下来尝试使用
将验证功能移入线程等待Task.Run(()=> ValidateForm());
,但是这也不起作用,因为线程需要访问视图中的各种UI控件,并且由于未创建它们而被禁止访问。现在我被卡住了。我在遍历UI元素以验证它们时如何显示忙碌指示器-将表单元素中的所有“答案”都放入一个列表并分别进行验证是没有意义的,因为这是我假定的控件的循环正在花时间...
答案 0 :(得分:0)
如果您需要异步执行UI线程上的验证,请尝试以下操作:
Device.BeginInvokeOnMainThread (async() => {
await ValidateForm();
})