如何刷新列表视图项

时间:2019-06-18 06:39:38

标签: listview xamarin.forms

我正在使用xamarin.forms Listview。在这里,我在view1中有一个ListView。 Listview的项目将从View2中给出。

我只有一个ViewModel用于View1和View2。添加项目详细信息后,我尝试先加载listView项目,然后再从view2转到View1。

从功能上讲一切都很好,但是View1并未从view2更新。

我到目前为止所做的:

-对1使用ObservableCollection

-从View2更新:

ListView

有什么我想念的吗?

2 个答案:

答案 0 :(得分:1)

我遇到过类似的情况,其中为您的ObservableCollection属性设置新值不会更新ListView。仅当您创建新的ObservableCollection时,UI才会更新。

尝试一下:

var listFromServer = SomeService.Instance.DetailsFromServer();
if (listFromServer?.Count > 0)
{
    ListViewItemSource = new ObservableCollection<MyModel>(listFromServer);
}
else
{
    ListViewItemSource = new ObservableCollection<MyModel>();
}

如果没有帮助,请尝试在出现View1时调用此代码。

答案 1 :(得分:1)

好的,这是一个简单的例子:

在View1中,在View1.xaml.cs中有一个名为listview的ListView:

public partial class View1: ContentPage
{
    public static ObservableCollection<ViewModel> list;

    public View1()
    {
        InitializeComponent();
        list = new ObservableCollection<ViewModel>();
        list.Add(...);
        list.Add(...);
        list.Add(...);
        list.Add(...);
        list.Add(...);
        listview.ItemsSource = list;
    }
}

在View2中,有一个按钮,当我单击它时,它将向View1中的列表中添加新数据:

private void Button_OnClicked(object sender, EventArgs e)
    {    
        var data = new ViewModel(...);
        View1.list.Add(data);
    }

然后,当您返回到View1时,列表视图将更新,这里通过定义static在全局范围内使用它,也可以使用enter image description here将数据从View2传递到View1,然后接收并更新数据并更新列表视图