单击另一个页面上的按钮后重新加载页面 - Xamarin

Reload page after button click on another page - Xamarin

我有 2 个页面,一个用于将数据插入 Firebase 数据库,我们称之为第 2 页,另一个用于显示 Firebase 数据,第 1 页。

我在 Page2 上有一个按钮单击参数,我在其中将数据插入数据库,但之后想重新加载 Page1。它的结构是这样的 (Page2.xaml.cs):

        void btInsert_Clicked(System.Object sender, System.EventArgs e)
    {
       //Firebase connection
       //Firebase data insertion
       //Code to reload Page1
      
    }

在我的第 1 页上,我有我的数据库连接和显示

Page1.xaml.cs:

        public Page1()
    {
        InitializeComponent();

        BindingContext = this;
        
        var collection = firebaseClient
            .Child("Childname")
            .AsObservable<MyDatabaseRecord>()
            .Subscribe((dbevent) =>
            {
                if (dbevent != null)
                {
                    DatabaseItems.Add(dbevent.Object);
                }
            });
    }

Page1.xaml:

    <StackLayout Margin="15,0,15,5" BackgroundColor="Navy">
    <CollectionView ItemsSource="{Binding DatabaseItems}">
        <CollectionView.ItemTemplate>
            <DataTemplate>
                <StackLayout>
                    <Frame BackgroundColor="Blue" HorizontalOptions="Center" Margin="0,0,0,17" Padding="2" WidthRequest="350" CornerRadius="20">
                        <StackLayout BackgroundColor="Blue">
                            <Label Text="{Binding Data1}" TextColor="White" FontAttributes="Bold" HorizontalOptions="Center" Margin="0, 5, 0, 0" FontSize="20"/>
                            <Label Text="{Binding Data2}" TextColor="White" Margin="10, 0, 0, 0" FontSize="15"/>
                            <Label Text="{Binding Data3}" TextColor="White" Margin="10, 0, 0, 0" FontSize="15"/>
                            <Label Text="{Binding Data4}" TextColor="White" Margin="10, 0, 0, 0" FontSize="15"/>
                            <Label Text="{Binding Data5}" TextColor="White" Margin="10, 0, 0, 20" FontSize="15"/>
                        </StackLayout>
                    </Frame>
                </StackLayout>
            </DataTemplate>
        </CollectionView.ItemTemplate>
    </CollectionView>
</StackLayout>

我该如何处理?

提前致谢。

有两种方法可以解决这个问题:

  1. 使用 MessagingCenter: 您可以使用MessagingCenter.Send<MainPage>(this, "Hi");发送。

    然后使用以下代码接收信息:

     MessagingCenter.Subscribe<MainPage> (this, "Hi", (sender) =>
     {
     // Do something whenever the "Hi" message is received
     }); 
    

    有关 MessagingCenter 的更多信息可在此处找到:https://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/messaging-center

  2. 可以在两个页面跳转时将集合作为参数传入,然后修改绑定的集合

对于绑定的数据数组,建议使用ObservableCollection动态更新数据。