【问题标题】:Xamarin Forms Prism DialogService takes some seconds to show upXamarin Forms Prism DialogService 需要几秒钟才能显示
【发布时间】:2019-11-29 01:53:56
【问题描述】:

我的对话框是一个简单的框架,带有一个图像、一个用于显示问题的标签和两个带有 TapCommand 的标签(是/否)。

我已经使用 DialogPage.xaml 和 DialogPageViewModel 设置了容器,并注入了我想要打开对话框的 ViewModel。

这是我用来调用对话框的代码:

    public void ShowDialog()
    {
        _dialogService.ShowDialog("DiscardPopup", CloseDialogCallback);
    }

    void CloseDialogCallback(IDialogResult dialogResult)
    {            
        var goBack = dialogResult.Parameters.GetValue<bool>("GoBack");

        if (goBack)
            NavigationService.GoBackAsync();
    }

如果用户点击“是”标签,我执行这个命令:

YesCommand = new DelegateCommand(() => YesTapped());



 private void YesTapped()
 {
      IDialogParameters pa = new DialogParameters();
      pa.Add("GoBack", true);
      RequestClose(pa);
 }

如果用户点击“无标签”,我只需调用:

NoCommand = new DelegateCommand(() => RequestClose(null));

“问题”是当 ShowDialog 被触发时,DiscardPopup 最多需要 3 秒才能显示出来。 有没有办法让它更快?

TapCommands 也是如此,调用 RequestClose 时需要 2 到 3 秒。

【问题讨论】:

  • 对话框显示得非常快。如果您遇到响应缓慢的问题,我可能会问:您使用的是多大的图像?是否必须调整大小?您使用的是旧设备吗?您的布局是否过于复杂? DialogService 重置页面的内容,因此如果您有一个过于复杂的页面,您可能会在重新呈现时出现延迟
  • 嗨@DanS。 DialogPage的图片不大(10KB的png文件),使用Aspect Fill我用Galaxy S10测试调用Dialog的Page由于组件数量有点复杂。

标签: xamarin.forms prism


【解决方案1】:

如果没有实际代码告诉您问题的确切原因,这将是最好的猜测。根据您对上述我的 cmets 的反馈,我建议如下:

  • 尝试在没有复杂布局的测试页面上显示对话框。我的猜测是你不会看到这么长的加载时间。如果是这种情况,则表明您的布局过于复杂,并且延迟时间是由于设备难以重新渲染视图
  • 尝试使用 Prism.Plugin.Popups。您需要初始化 Rg.Plugins.Popup 并注册 DialogService。您可以在 http://popups.prismplugins.com 上查看相关文档

【讨论】:

  • 你说得对,如果我在新页面中调用对话框,它会运行得非常快。我的页面目前正在使用手风琴组件在每个类别中添加一些元素。可能我需要重新考虑这个观点。
猜你喜欢
  • 1970-01-01
  • 2020-03-27
  • 2022-10-21
  • 1970-01-01
  • 2010-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多