【发布时间】:2020-06-12 11:39:28
【问题描述】:
我的XAML 文件的ListView 被一个ViewModel 填充,该ViewModel 具有来自服务的ObservableCollection,但ListView 没有更新信息。我已经检查了该服务是否返回了正确的信息。
XML:
<ListView x:Name="DashboardDetailsList"
SelectionMode="None"
HasUnevenRows="True"
ItemsSource="{Binding DetailsList}"
BackgroundColor="Transparent"
VerticalOptions="FillAndExpand"
SeparatorVisibility="None">
<ListView.ItemTemplate>
<DataTemplate>
<ViewCell>
...
...
</ViewCell>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
代码:
public ObservableCollection<Dashboard> DetailsList { get; set; } = new ObservableCollection<Dashboard>();
//API Call
details = await _clientAPI.getDashboardDetails(id);
if (details != null)
{
DetailsList.Clear();
foreach (var item in details)
{
DetailsList.Add(item);
}
}
【问题讨论】:
-
使用 InotifyPropertyChanged() 将其设为提升属性
-
什么时候设置ViewModel为Page的BindingContext?将 DetailsList 转换为完整属性并调用 OnPropertyChanged 将是更安全的代码。
-
你好,@enish 请给我示例代码。
-
您可以编辑问题并发布整个 XAML 及其背后的代码吗?呼应@enisn - 我也有预感您没有设置
ContentPage.BindingContext,因为您的ViewModel 逻辑很好,并且您正确地将ListView.ItemSource绑定到ObservableCollection。
标签: listview mvvm xamarin.forms observablecollection tabbedpage