Listview 如何刷新列表视图项
我正在研究xamarin.forms列表视图。这里我在view1中有一个ListView。Listview的项目将从View2中提供 我有一个View1和View2的ViewModel。添加项目详细信息后,我尝试在从view2转到View1之前加载listView项目 功能上一切正常,但View1没有从view2更新 到目前为止我所做的: -对Listview 如何刷新列表视图项,listview,xamarin.forms,Listview,Xamarin.forms,我正在研究xamarin.forms列表视图。这里我在view1中有一个ListView。Listview的项目将从View2中提供 我有一个View1和View2的ViewModel。添加项目详细信息后,我尝试在从view2转到View1之前加载listView项目 功能上一切正常,但View1没有从view2更新 到目前为止我所做的: -对列表视图使用ObservableCollection -从View2更新: // Calling this from View2 Device.Begin
列表视图使用ObservableCollection
-从View2更新:
// Calling this from View2
Device.BeginInvokeOnMainThread(async () =>
{
await LoadListViewDetails();
});
有什么我遗漏的吗?我遇到过这样的情况,在这种情况下,为ObservableCollection
属性设置新值不会更新列表视图。仅当您创建新的observateCollection
时,它才会更新UI
试试这个:
var listFromServer = SomeService.Instance.DetailsFromServer();
if (listFromServer?.Count > 0)
{
ListViewItemSource = new ObservableCollection<MyModel>(listFromServer);
}
else
{
ListViewItemSource = new ObservableCollection<MyModel>();
}
var listFromServer=SomeService.Instance.DetailsFromServer();
如果(listFromServer?.Count>0)
{
ListViewItemSource=新的ObservableCollection(listFromServer);
}
其他的
{
ListViewItemSource=新的ObservableCollection();
}
如果没有帮助,请尝试在View1出现时调用此代码。我遇到过这样的情况,在这种情况下,为ObservableCollection
属性设置新值不会更新ListView
。仅当您创建新的observateCollection
时,它才会更新UI
试试这个:
var listFromServer = SomeService.Instance.DetailsFromServer();
if (listFromServer?.Count > 0)
{
ListViewItemSource = new ObservableCollection<MyModel>(listFromServer);
}
else
{
ListViewItemSource = new ObservableCollection<MyModel>();
}
var listFromServer=SomeService.Instance.DetailsFromServer();
如果(listFromServer?.Count>0)
{
ListViewItemSource=新的ObservableCollection(listFromServer);
}
其他的
{
ListViewItemSource=新的ObservableCollection();
}
如果没有帮助,请在显示View1时尝试调用此代码。好的,下面是一个简单的示例:
在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;
}
}
然后,当您返回到View1时,listview将更新,这里是通过定义静态全局使用它,您还可以使用将数据从View2传递到View1,然后接收和更新数据并更新listview。好的,下面是一个简单的示例:
在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;
}
}
然后,当您返回到View1时,listview将更新,这里是通过定义静态全局使用它,您还可以使用将数据从View2传递到View1,然后接收和更新数据并更新listview您可以发布LoadListViewDetails()
?ListViewItemSource=new ObservableCollection()的代码吗;var listFromServer=SomeService.Instance.DetailsFromServer();如果(listFromServer?.Count>0){ListViewItemSource=listFromServer;}
这就是像@DennisSchröerHow这样的LoadListViewDetails()
实现如何显示View1
和View2
?这是母版/详细页还是从View2
导航回View1
?这些只是内容页。我正在使用wait Application.Current.MainPage.Navigation.PopAsync()
从View2
导航到View1
如何设置两个视图的BindingContext
?我只想确保两个视图使用的是同一个ViewModel
实例,您可以发布LoadListViewDetails()
?ListViewItemSource=new ObservableCollection()的代码吗;var listFromServer=SomeService.Instance.DetailsFromServer();如果(listFromServer?.Count>0){ListViewItemSource=listFromServer;}
这就是像@DennisSchröerHow这样的LoadListViewDetails()
实现如何显示View1
和View2
?这是母版/详细页还是从View2
导航回View1
?这些只是内容页。我正在使用wait Application.Current.MainPage.Navigation.PopAsync()
从View2
导航到View1
如何设置两个视图的BindingContext
?我只想确保两个视图使用的是ViewModel
Thank you@Dennis Schröer的同一个实例,但这对我没有帮助。我可以从视图1中调用它,但根据我的要求,不允许从外观调用。谢谢@Dennis Schröer,但这对我没有帮助。我可以从视图1中调用它,但根据我的要求,不允许从外观中调用。谢谢您的帮助,我可以通过MessagingCenter使其正常工作。由于某些原因,我无法初始化ViewModel,因此无法使用第一个解决方案,因此通过消息中心,我可以找到答案。感谢您的帮助,我可以通过消息中心使其正常工作。由于某些原因,我无法初始化ViewModel,因此无法使用第一个解决方案,因此通过消息中心,我可以找到答案。