Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/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
Xamarin.forms Xamarin Forms Prism DialogService需要几秒钟才能显示_Xamarin.forms_Prism - Fatal编程技术网

Xamarin.forms Xamarin Forms Prism DialogService需要几秒钟才能显示

Xamarin.forms Xamarin Forms Prism DialogService需要几秒钟才能显示,xamarin.forms,prism,Xamarin.forms,Prism,我的对话框是一个带有图像的简单框架,一个用于显示问题的标签,还有两个标签(是/否)和TapCommand 我已经用DialogPage.xaml和DialogPageViewModel设置了容器,并将其注入到我想要打开对话框的ViewModel中 下面是我用来调用对话框的代码: public void ShowDialog() { _dialogService.ShowDialog("DiscardPopup", CloseDialogCallback);

我的对话框是一个带有图像的简单框架,一个用于显示问题的标签,还有两个标签(是/否)和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();
    }
如果用户点击“无标签”,我只需调用:

NoCommand = new DelegateCommand(() => RequestClose(null));
“问题”是,当启动ShowDialog时,弹出窗口最多需要3秒钟才能显示。 有没有办法让它更快


在调用RequestClose时,TapCommands也会发生同样的情况,2-3秒。

如果没有实际的代码告诉您问题的具体内容,那么这将是最好的猜测。根据您对我上述评论的反馈,我建议如下:

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

对话框显示得非常快。如果您的反应很慢,我可能会问:您使用的图像有多大?它必须调整大小吗?您正在使用旧设备吗?你的布局是否过于复杂?DialogService会重置页面的内容,因此,如果您有一个过于复杂的页面,则在重新呈现hi@DanS时可能会有延迟。DialogPage的图像不大(10 KB的png文件),使用Aspect Fill我正在使用Galaxy S10测试调用对话框的页面,由于它有大量的组件,所以有点复杂。你是对的,如果我在一个新页面中调用对话框,它工作得相当快。我的页面目前正在使用一个手风琴组件在每个类别中添加一些元素。也许我需要重新思考这个观点。
NoCommand = new DelegateCommand(() => RequestClose(null));