首页 > 解决方案 > 为什么使用 MessagingCenter 将数据从数据库从 iOS 项目传递到 MainPage 时 ListView.ItemSource 为空 - Xamarin

问题描述

我想将包含数据库中的数据的列表从 iOS 项目传递到主页(主项目)并希望ListView使用MessagingCenter

从 iOS 项目中,CustomMapRenderer.cs我使用此方法将数据发送到主项目中的主页:

CustomPin GetCustomPin(MKPointAnnotation annotation)
    {
        var position = new Position(annotation.Coordinate.Latitude, annotation.Coordinate.Longitude);

        foreach (var pin in customPins)
        {
            if (pin.Position == position)
            {
                int mapCode = int.Parse(pin.CodeNum.ToString());

                var result = DataBaseConnection(mapCode);

                MessagingCenter.Send<object, IEnumerable<AlertLevel>>(this, "PinSelected", result);

                return pin;
            }
        }
        return null;
    }

result充满了数据:

结果

MainPage.cs我尝试使用以下代码接收数据:

 public void MarkerPressed()
    {
        MessagingCenter.Subscribe<object, IEnumerable<AlertLevel>>(this, "PinSelected", (sender, arg) =>
        {
            lstLevel.ItemsSource = arg;

            labelColumn1.IsVisible = true;
            labelColumn2.IsVisible = true;
            labelColumn3.IsVisible = true;
            content.IsVisible = false;
        });
    }

但是lstLevel.ItemsSource = arg;来空,我不知道为什么?

ListView的输入MainPage.xaml是:

<ListView x:Name="lstLevel">
                <ListView.ItemTemplate>
                    <DataTemplate>
                        <ViewCell>

                            <StackLayout Orientation="Horizontal">
                                <Label HorizontalOptions="StartAndExpand"
                                       Text="{Binding dateForecast, StringFormat='{0:dd.MM} - {0:hh\\:mmч.}'}"/>
                                <Image Source="{Binding levelForecast, Converter={StaticResource levelImage}}"
                                       HorizontalOptions="StartAndExpand"/>
                                 <Label HorizontalOptions="StartAndExpand"
                                       Text="{Binding levelForecast}"
                                       HorizontalTextAlignment="Center"/>
                               
                            </StackLayout>

                        </ViewCell>
                    </DataTemplate>
                </ListView.ItemTemplate>
            </ListView>

这种方式在Android项目上运行良好,但在 iOS 中我不知道为什么argListView出现 null ?

如何将数据从 iOS 项目传递到我ListView的 inMainPage

标签: c#iosxamarin

解决方案


推荐阅读