【发布时间】:2018-06-14 06:16:34
【问题描述】:
由于以下方法似乎不起作用,我可能会错过更新 Xamarin.Forms ListView 的核心概念。也许你可以帮忙,应该如何正确完成。
我在 Xamarin.Forms 页面中遇到以下情况: 一个类似页面的 ListView:
<ListView x:Name="listView" Margin="0" ItemSelected="OnListItemSelected" ItemsSource="{Binding Items}">
<ListView.ItemTemplate>
...
</ListView.ItemTemplate>
</ListView>
这个 ListView 的绑定连接到 ViewModel 中的 Items,基本上如下所示:
private ObservableCollection<Item> items = new ObservableCollection<Item>();
public ObservableCollection<Item> Items
{
get
{
items.Clear();
if (SomeSingeltonSource != null)
{
IEnumerable<Item> current = SomeSingeltonSource.GetCurrentItems(viewModelState);
foreach (Item wf in current)
{
items.Add(wf);
}
}
return items;
}
}
ItemSelected 上调用的方法如下所示:
void OnListItemSelected(object sender, SelectedItemChangedEventArgs e)
{
if (e.SelectedItem is Item selectedItem)
{
...
}
}
现在在第一次绑定之后,一切正常。 但是如果 Items 发生变化,List 仍然会正确更新,但是如果我在列表中选择一个 Item,仍然会调用 OnListItemSelected 方法,但是 e.SelectedItem 始终为 null。
在 Xamarin.Forms 3.0.0 Service Release 1 之前一切正常,但从 Service Release 2 开始就不再工作了。
我是否遗漏了更新 ListView 的重要概念,或者是否有其他以错误方式实现的东西?
【问题讨论】:
标签: c# listview xamarin xamarin.forms