在MUAI中,使用DXpopup并在分页中加载指示器

In MUAI, using DXpopup and loading indicator in pagination

提问人:Buğra Kaan Sağlam 提问时间:11/14/2023 更新时间:11/14/2023 访问量:34

问:

我尝试了几种解决方案,使用 Task.Run(()=>) 可以完成。 当我尝试没有任务时,UI 冻结了,它仅在页面更改之前显示微调器。 有 2 个示例,第一个是工作,但并非所有分页工作都需要任务。我想要第二件作品,就像第一件一样。

  Working one:
if (IsBusy) return;
       Platforms.KeyboardHelper.HideKeyboard();
       GlobalConstants.costantSpinner.Show();
       try
       {           
           GlobalVariables._loginDTO = await Task.Run(() => /*something to do before page change */);
           await Shell.Current.GoToAsync("somePage");
       }
       catch (Exception ex) {/* Display ex*/ }
       finally { IsBusy = false; GlobalConstants.costantSpinner.IsOpen = false; }

当之前有事要做时,它可以完美地工作 不工作一:

  if (IsBusy) return;
            GlobalConstants.costantSpinner.Show();
            try { IsBusy = true; await Shell.Current.GoToAsync(/*Some page*/); }
            catch (Exception ex) {/* Display ex*/}
            finally { IsBusy = false; GlobalConstants.costantSpinner.IsOpen = false; }
异步 分页 DevExpress Maui 移动应用程序

评论

0赞 Riccardo Minato 11/14/2023
我不明白你对第二个有什么期望。您正在显示一个微调器,然后立即切换页面,因此微调器没有足够的时间来显示和旋转。
0赞 Buğra Kaan Sağlam 11/14/2023
但是有时间,当您尝试“GoToAsync”时,代码总是在导航前等待几秒钟,因为下一页上有含义,例如加载要显示的内容或要进行的一些计算。因此,您有足够的时间来显示指示器,但是在第二秒中,一个指示器不会在前几秒钟显示,而是在分页前的最后一秒显示。感谢您的回复

答:

0赞 Riccardo Minato 11/14/2023 #1

如果希望微调框显示并旋转一段时间,可以在导航到其他页面之前添加延迟。

if (IsBusy) return;
            GlobalConstants.costantSpinner.Show();
            
            try { IsBusy = true;
                  await Task.Delay(1000); // Add this line!
                  await Shell.Current.GoToAsync(/*Some page*/); }
            catch (Exception ex) {/* Display ex*/}
            finally { IsBusy = false; GlobalConstants.costantSpinner.IsOpen = false; }

评论

0赞 Buğra Kaan Sağlam 11/14/2023
谢谢你的回答,我将延迟减少到 500,它就像一个魅力!