【发布时间】:2019-08-10 14:16:19
【问题描述】:
我正在尝试在 xamarin 中创建一个列表视图来显示来自 restapi 的数据,但可以选择过滤列表或根据姓氏对其进行排序。
我已将 bindingcontext 设置为等于有效的 apiviewmodel。但我想将 itemssource 设置为稍后可以操作的列表,而不是绑定上下文。
这是有效的代码:
Xaml:
<ListView x:Name="DirectoryListView" ItemsSource="{Binding ContactsList}" IsPullToRefreshEnabled="True">
Xaml.cs:
LocalAPIViewModel = new APIViewModel();
BindingContext = LocalAPIViewModel;
APIViewModel.cs:
private List<MainContacts> _ContactsList { get; set; }
public List<MainContacts> ContactsList
{
get
{
return _ContactsList;
}
set
{
if(value != _ContactsList)
{
_ContactsList = value;
NotifyPropertyChanged();
}
}
}
public class MainContacts
{
public int ID { get; set; }
public string FirstName { get; set; }
}
这一切都很好。只有当我添加以下行时,它才会停止在列表视图中显示数据:
xaml.cs:
LocalList = LocalAPIViewModel.ContactsList;
DirectoryListView.ItemsSource = LocalList;
我想我需要添加这些行,以便我可以操作正在显示的列表。为什么不显示列表?这不应该是这样吗?
【问题讨论】:
-
为什么要添加这些行?它完全违反了 MVVM 架构。此外,您基本上是在将相同的数据源重新分配给 ListView,这没有任何意义。你想达到什么目标?
-
如您所知,我对此很陌生。我希望能够使用搜索栏搜索列表,并按名字或姓氏对其进行排序。我还希望能够单击其中一个联系人并打开有关该联系人的单独页面。
-
@Ryan,我做了一个可以满足你要求的样品,请看看我的回复更新。
-
@Ryan,你不需要添加那些行,我使用 BindingContext 做示例,可以接受你的要求,你可以看看我的更新。