Xamarin Forms Prism DialogService 需要几秒钟才能显示出来
Xamarin Forms Prism DialogService takes some seconds to show up
我的对话框是一个简单的框架,带有一个图像、一个用于显示问题的标签和两个带有 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();
}
如果用户点击 "Yes label",我执行此命令:
YesCommand = new DelegateCommand(() => YesTapped());
private void YesTapped()
{
IDialogParameters pa = new DialogParameters();
pa.Add("GoBack", true);
RequestClose(pa);
}
如果用户点击 "No label",我只需调用:
NoCommand = new DelegateCommand(() => RequestClose(null));
"problem" 是在触发 ShowDialog 时,DiscardPopup 最多需要 3 秒才能显示。
有没有办法让它更快?
调用 RequestClose 时,TapCommands 也会发生同样的情况,需要 2 - 3 秒。
如果没有实际代码告诉您确切的问题是什么,那将是最好的猜测。根据您对我上面评论的反馈,我建议如下:
- 尝试在布局不复杂的测试页上显示对话框。我猜你不会看到这么长的加载时间。如果是这种情况,这将表明您的布局过于复杂,并且延迟时间是由于设备努力重新呈现视图
- 尝试使用 Prism.Plugin.Popups。您需要初始化 Rg.Plugins.Popup 并注册 DialogService。您可以在 http://popups.prismplugins.com
查看相关文档
我的对话框是一个简单的框架,带有一个图像、一个用于显示问题的标签和两个带有 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();
}
如果用户点击 "Yes label",我执行此命令:
YesCommand = new DelegateCommand(() => YesTapped());
private void YesTapped()
{
IDialogParameters pa = new DialogParameters();
pa.Add("GoBack", true);
RequestClose(pa);
}
如果用户点击 "No label",我只需调用:
NoCommand = new DelegateCommand(() => RequestClose(null));
"problem" 是在触发 ShowDialog 时,DiscardPopup 最多需要 3 秒才能显示。 有没有办法让它更快?
调用 RequestClose 时,TapCommands 也会发生同样的情况,需要 2 - 3 秒。
如果没有实际代码告诉您确切的问题是什么,那将是最好的猜测。根据您对我上面评论的反馈,我建议如下:
- 尝试在布局不复杂的测试页上显示对话框。我猜你不会看到这么长的加载时间。如果是这种情况,这将表明您的布局过于复杂,并且延迟时间是由于设备努力重新呈现视图
- 尝试使用 Prism.Plugin.Popups。您需要初始化 Rg.Plugins.Popup 并注册 DialogService。您可以在 http://popups.prismplugins.com 查看相关文档