我正在尝试在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获取的列表。 您能帮我一下,让我知道我在做错什么吗。 我对编码非常陌生,请提供帮助
答案 0 :(得分:0)
根据您的代码,我认为这可能是绑定源未及时更新。
首先,请检查以下内容:
assignCourseDetail.getAssignCourse (id);
的结果是从ICollection
继承的类型(例如List
或ObservableCollection
)
获取的数据结构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
的绑定值。
第二,在“隐藏代码”中修改ItemsSource的值
courseList = await assignCourseDetail.getAssignCourse(id);
course_list_view.ItemsSource = null;
course_list_view.ItemsSource = courseList;
courseList
作为数据源在外部定义。如果我们希望数据更改触发UI更改,则需要一次更改ListView.ItemsSource
的值,以便将数据更改通知UI。
最诚挚的问候。