Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Xamarin-发布后刷新列表视图_C#_Rest_Listview_Xamarin_Xamarin.forms - Fatal编程技术网

C# Xamarin-发布后刷新列表视图

C# Xamarin-发布后刷新列表视图,c#,rest,listview,xamarin,xamarin.forms,C#,Rest,Listview,Xamarin,Xamarin.forms,我正在开发一个Xamarin表单应用程序,它有一个选项卡式页面。其中一个选项卡包含一个ListView控件,显示从RESTAPI使用的数据。如果我点击add按钮,一个模式显示我可以在哪里创建新项目并向RESTAPI发送post。成功后,我从导航中弹出模式,并显示列表视图。在my列表视图中,未显示最后添加的项目 添加项目后,如何调用RESTAPI刷新列表视图 这是我的XAML页面:BonosView.XAML 我想在模式弹出后调用该方法。我在包含listview的页面上使用了出现的方法,因此当模式

我正在开发一个Xamarin表单应用程序,它有一个选项卡式页面。其中一个选项卡包含一个
ListView
控件,显示从RESTAPI使用的数据。如果我点击add按钮,一个模式显示我可以在哪里创建新项目并向RESTAPI发送post。成功后,我从导航中弹出模式,并显示
列表视图。在my
列表视图中,未显示最后添加的项目

添加项目后,如何调用RESTAPI刷新
列表视图

这是我的XAML页面:BonosView.XAML


我想在模式弹出后调用该方法。

我在包含listview的页面上使用了
出现的
方法,因此当模式弹出时,我可以在该方法中刷新。也许这不是最好的解决方案,但它现在正在发挥作用

this.Appearing += (object sender, EventArgs e) =>
{
            refreshData();
};

最后,我在包含listview的页面上使用了
出现的
方法,因此当模式弹出时,我可以在该方法中刷新。也许这不是最好的解决方案,但它现在正在发挥作用

this.Appearing += (object sender, EventArgs e) =>
{
            refreshData();
};

使用出现的
事件是正确的,但您也不需要在方法上使用
异步void
,除非它是事件处理程序

更新
刷新数据
方法以使用
异步任务

async Task refreshData() {
    this.IsBusy = true;
    bonosLista = await manager.GetAll();  //obtaining bonos from Server

    if (bonosLista != null) {
        if (bonosLista.Count() > 0) {
            BonosList.ItemsSource = bonosLista;
        } else {
            BonosList.IsVisible = false;
            BonosListMessage.IsVisible = true;
        }
    } else {
        await DisplayAlert("Error!", "Se ha producido un error en la conexión", "OK");
    }
    this.IsBusy = false;
}
事件处理程序是唯一可以使用async void的地方,因此更新到

this.Appearing += async (object sender, EventArgs e) => {
    await refreshData();
};

使用出现的
事件是正确的,但您也不需要在方法上使用
异步void
,除非它是事件处理程序

更新
刷新数据
方法以使用
异步任务

async Task refreshData() {
    this.IsBusy = true;
    bonosLista = await manager.GetAll();  //obtaining bonos from Server

    if (bonosLista != null) {
        if (bonosLista.Count() > 0) {
            BonosList.ItemsSource = bonosLista;
        } else {
            BonosList.IsVisible = false;
            BonosListMessage.IsVisible = true;
        }
    } else {
        await DisplayAlert("Error!", "Se ha producido un error en la conexión", "OK");
    }
    this.IsBusy = false;
}
事件处理程序是唯一可以使用async void的地方,因此更新到

this.Appearing += async (object sender, EventArgs e) => {
    await refreshData();
};

我建议改为使用内置的,这样您就不必刷新整个列表。在“添加”按钮的命令中,使用MessagingCenter发送新的“bonos”项目,并在已呈现列表的页面/视图模型中,订阅该消息以将其添加到已存在的项目集合中。

我建议改用内置按钮,这样您就不必刷新整个列表。在“添加”按钮的命令中,使用MessagingCenter发送新的“bonos”项目,在已呈现列表的页面/视图模型中,订阅该消息以将其添加到已存在的项目集合中。

我将在Post完成后使用MessagingCenter发送消息,这将告诉LIstView刷新它的数据如果您在模型中将BonoList.ItemsSource的绑定定义为ObservableCollectionBonoLista那么列表应该更新如果我推到列表@Yuris,那么“推”是什么意思?这一行应该这样做:BonosList.ItemsSource=bonosLista;push=将对象添加到列表我将在Post完成后使用MessagingCenter发送消息,然后通知LIstView刷新其数据如果您将模型中的BonoList.ItemsSource定义为ObservableCollection BonoLista然后列表应该更新如果我推到列表@Yuris,那么“推”是什么意思?这一行应该这样做:BonosList.ItemsSource=bonosLista;push=将对象添加到列表中