c# - C#,UWP 应用程序:无法将数据从 API 绑定到列表视图
问题描述
我正在尝试在 UWP 应用程序中显示从 api 到 listview 的数据列表。
请在下面找到我的 XAML 代码:
<ListView Name="course_list_view" Margin="-167,389,167,389" ItemsSource="{Binding .}"
ScrollViewer.HorizontalScrollMode="Enabled"
ScrollViewer.HorizontalScrollBarVisibility="Auto"
ScrollViewer.VerticalScrollMode="Disabled"
ScrollViewer.VerticalScrollBarVisibility="Hidden">
<ListView.ItemTemplate>
<DataTemplate >
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="47"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Image Source="{Binding avatar}" Width="32" Height="32"
HorizontalAlignment="Left" VerticalAlignment="Center"/>
<TextBlock Text="{Binding subject_name}" Foreground="Teal" FontSize="14"
Grid.Column="1" VerticalAlignment="Center"/>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
请在下面找到我的代码:
private async Task GetAssignCourse()
{
string id = localSettings.Values[appconstant.ID].ToString();
AssignCourseService assignCourseDetail = new AssignCourseService();
courseList = await assignCourseDetail.getAssignCourse(id);
//for (int i = 0; i < courseList.Count; i++)
//{
// Assignedcourselist assignedcourselist = courseList[i];
//}
course_list_view.ItemsSource = courseList;
//course_list_view.DisplayMemberPath = "subject_name";
}
我无法显示从 API 到列表的列表。你能帮助我,让我知道我正在做的错误。我对编码很陌生,所以请帮忙
解决方案
根据您的代码,我认为这可能是绑定源没有及时更新。
首先,请检查以下内容:
结果 from
assignCourseDetail.getAssignCourse (id);
是继承自的类型ICollection
(例如List
orObservableCollection
)数据结构是否
courseList
包含您在DataTemplate
其次,如果这些都正常的话,可以选择以下两个选项试试:
1.在XAML中绑定数据源
XAML
<ListView Name="course_list_view" Margin="-167,389,167,389" ItemsSource="{Binding courseList}"
...
>
...
</ListView>
XAML.cs
var result = await assignCourseDetail.getAssignCourse(id);
courseList.Clear();
foreach(var item in result)
{
courseList.Add(item);
}
// No need set the ItemsSource
// course_list_view.ItemsSource = courseList;
如果courseList
是ObservableCollection
,那么可以使用这种方式。因为ObservableCollection
继承了INotifyCollectionChanged
接口,所以当集合项发生变化时会通知UI发生变化。
2.修改ItemsSource的值一次
首先移除 XAML 中的绑定值ListView.ItemsSource
。
其次,修改Code-behind中ItemsSource的值
courseList = await assignCourseDetail.getAssignCourse(id);
course_list_view.ItemsSource = null;
course_list_view.ItemsSource = courseList;
courseList
作为数据源,是外部定义的。如果我们想要数据的变化触发 UI 的变化,我们需要改变ListView.ItemsSource
一次的值,这样数据的变化就会被通知给 UI。
此致。
推荐阅读
- amazon-web-services - AWS S3 存储桶存储类型和同步
- wordpress - wordpress多站点中单个站点的多个域
- python - Elasticsearch:我想计算特定值在特定字段中出现的次数
- reactjs - 如何通过选择并切换到reactjs中的任何选项来仅在父组件的变量中获取一个值?
- autodesk-forge - Autodesk Forge C# 问题创建 API 错误,AUTH-010
- angular - 路由器链接选择器
- laravel - 在 laravel 的 laravel api 资源中使用分页
- c# - 错误 CS0029 Visual Studio Blazor,如何解决?
- css - 你能在 :local 和 :global 选择器中组合 CSS 类吗?
- django - 无法在 django rest 框架中发送电子邮件