Prism Navigation.GoBackAsync 在 UWP 上不断抛出错误

问题描述

我正在构建一个使用 Prism MVVM 的应用程序。我有包含查找按钮的页面 A 和包含所有可选选项的页面 2。我想要做的是当用户单击查找按钮时,它将导航到第 2 页,然后用户将选择该项目并导航回带有所选项目的第 1 页。但是, Navigation.GoBackAsync(selectedItem) 不断抛出错误 Message = "System.NullReferenceException: 未将对象引用设置为对象的实例。\r\n 在 Xamarin.Forms.Platform.UWP.SelectableItemsVieWrenderer1.UpdateFormsSingleSelection()\r\n at Xamarin.Forms.Platform.UWP.SelectableItemsVieWrenderer1.UpdateForm... 在 UWP 上(在 Android 上运行良好)。

第 2 页上的导航命令:

private async void OnItemSelectedCommandExecutedAsync(T obj)
        {
            if (!ItemSelectedCommandCanExecute(obj))
                return;

            try
            {
                string objectType = typeof(T).Name.Replace("Model","");
                var navigationParams = new NavigationParameters();
                navigationParams.Add($"Selected{objectType}",SelectedItem);
             
                await _navigationService.GoBackAsync(navigationParams);
                //await _navigationService.NavigateAsync(ReturnPageName,navigationParams);
            }
            catch (Exception ex)
            {
                displayError(ex.Message);
            }
        }

包含第 2 页上的可选项目的集合视图:

<CollectionView VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand"
                    x:Name="lstItems"
                    ItemsSource="{Binding ItemList}"
                    
                    SelectionChangedCommand="{Binding ItemSelectedCommand}"
                    SelectedItem="{Binding SelectedItem}"
                    SelectionMode="Single"
                    BackgroundColor="Transparent"
                    EmptyView="{x:Static resource:StringResources.noresultsFound}">
           

                <CollectionView.ItemTemplate VerticalItemSpacing="20">
                    <DataTemplate>
                        <StackLayout BackgroundColor="{Binding .,Converter={StaticResource bgColorPicker},ConverterParameter={x:Reference lstItems}}">
                           
                            
                            <Grid HorizontalOptions="FillAndExpand" Margin="0,5" Padding="5" ColumnDeFinitions="*,*,*" RowDeFinitions="Auto,Auto,Auto">
                                <Label Text="{Binding WorkOrderNo}" Grid.Column="0" VerticalOptions="Start"/>
                                <Label Text="{Binding InventoryNumber}" Grid.Column="1" VerticalOptions="Start"/>
                                <Label Text="{Binding PartNo}" Grid.Column="2" VerticalOptions="Start"/>
                                <StackLayout Orientation="Vertical" Grid.Column="0" Grid.Row="1" Grid.ColumnSpan="3" VerticalOptions="Start">
                                    <Label Text="{Binding Description}"/>
                                </StackLayout>
                                <StackLayout Orientation="Vertical" Grid.Column="0" Grid.Row="2" Grid.ColumnSpan="3" VerticalOptions="Start">
                                    <Label Text="{Binding Task}"/>
                                </StackLayout>
                            </Grid>
                        </StackLayout>
                    </DataTemplate>
                </CollectionView.ItemTemplate>
            </CollectionView>

我在 Xamarin GitHub (https://github.com/xamarin/Xamarin.Forms/issues/11090) 上发现了此错误,他们说已修复,但我在 5.0 版中仍然遇到此错误。有人知道如何解决这个错误吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)