Xamarin Forms Prism DialogService 显示在 ModalNavigation 后面

Jos*_*dad 8 prism xamarin.forms

我正在使用自定义 DialogService,我遇到的问题是我首先将页面显示为模态,当发送以显示 DialogPage 时,它​​显然没有显示,但它确实在模型页面的后面。

模态页面的调用

await _navigationService.NavigateAsync("ProfilePage", useModalNavigation: true);
Run Code Online (Sandbox Code Playgroud)

Xaml 自定义对话框

<ContentView  xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:prism="http://prismlibrary.com"
              prism:DialogLayout.LayoutBounds="0.5, 0.5, -1, -1"
             prism:DialogLayout.RelativeWidthRequest="0.60"
              BackgroundColor="White"
             x:Class="ComedorIndustrial.Prism.Views.MessageDialog">

    <Grid Padding="30,60">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="Auto" />
            <RowDefinition Height="Auto" />
            <RowDefinition Height="Auto" />
        </Grid.RowDefinitions>

        <Image Source="iconoError.png" />
        <Label Text="{Binding Title}" HorizontalTextAlignment="Center" TextColor="#ee3837" Grid.Row="1" Style="{StaticResource RobotoBold}" FontSize="30"/>
        <Label Text="{Binding Message}" HorizontalTextAlignment="Center" TextColor="#bdbcc2" Grid.Row="2" FontSize="14" />
        <Button Text="Volver a intentar"
            Command="{Binding CloseCommand}"
            BackgroundColor="#ee3837" BorderRadius ="25"  TextColor="White" HorizontalOptions="FillAndExpand" Opacity="1" FontSize="12" Margin="0,15,0,0"
            Grid.Row="3"/>
    </Grid>

</ContentView>
Run Code Online (Sandbox Code Playgroud)

自定义对话框调用

   public static void ShowAlert(this IDialogService dialogService, string title, string message)
    {
                var parameters = new DialogParameters
        {
            { "title", title },
            { "message", message }
        };
        dialogService.ShowDialog("MessageDialog", parameters);
    }
Run Code Online (Sandbox Code Playgroud)

编辑:

我已经解决了!

添加插件:Prism.Plugin.Popups

然后在 App.xaml.cs 中添加以下代码行: containerRegistry.RegisterPopupDialogService();

文档位于以下页面: popups.prismplugins.com

问候!

Dan*_* S. 2

您所描述的是 Prism 7.2 中的一个已知错误。此问题已在 Prism 8 中得到解决,或者正如您所指出的,您可以简单地使用 Prism.Plugin.Popups 来使用该服务的 PopupPage 变体。