我正在使用xamarin.forms Listview。在这里,我在view1中有一个ListView。 Listview的项目将从View2中给出。
我只有一个ViewModel用于View1和View2。添加项目详细信息后,我尝试先加载listView项目,然后再从view2转到View1。
从功能上讲一切都很好,但是View1并未从view2更新。
我到目前为止所做的:
-对1
使用ObservableCollection
-从View2更新:
ListView
有什么我想念的吗?
答案 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在全局范围内使用它,也可以使用将数据从View2传递到View1,然后接收并更新数据并更新列表视图