listview - 如何将嵌套的可观察集合值绑定到列表视图
问题描述
我想在列表视图中显示所有学生姓名。我已经完成了如下操作。但它显示了一个空的列表视图。
public class ClassRoomDetailsList
{
public int ClassRoomID { get; set; }
public ObservableCollection<StudentsList> StudentsArray { get; set; }
}
public class StudentsList
{
public string StudentName{ get; set; }
}
public static ObservableCollection<ClassRoomDetailsList> _ClassRoomDetailsList = new ObservableCollection<ClassRoomDetailsList>();
//assigned values to observable collection here
list1.ItemsSource = AppGlobals._ClassRoomDetailsList;
<ListView x:Name="list1" HorizontalAlignment="Right" Height="500" Width="500" Background="Violet" >
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Vertical">
<Border Background="#b9fbc9" VerticalAlignment="Center">
<TextBlock Text="{Binding StudentName}" FontSize="30" HorizontalAlignment="Center" VerticalAlignment="Center" Foreground="Black"/>
</Border>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
我已检查 _ClassRoomDetailsList 是否正确包含学生姓名。是的。那么空列表视图的问题是什么?
解决方案
_ClassRoomDetailsList
是一个对象,其ObservableCollection<ClassRoomDetailsList>
子项是ClassRoomDetailsList
对象,但是您的 ListView 想要绑定StudentsList
对象的StudentName
,所以您ListView.ItemsSource
应该是一个 ObservableCollection<StudentsList>
对象。
您在 ListView 的 DataTemplate 中的绑定应该在 ObservableCollection< T >中绑定T类对象的属性。这是一个基于您的模型的简单示例。
public MainPage()
{
this.InitializeComponent();
ObservableCollection<StudentsList> studentsLists = new ObservableCollection<StudentsList>();
studentsLists.Add(new StudentsList() { StudentName = "first student" });
studentsLists.Add(new StudentsList() { StudentName = "second student" });
studentsLists.Add(new StudentsList() { StudentName = "third student" });
studentsLists.Add(new StudentsList() { StudentName = "fourth student" });
studentsLists.Add(new StudentsList() { StudentName = "fifth student" });
_ClassRoomDetailsList.StudentsArray = studentsLists;
//assigned values to observable collection here
list1.ItemsSource = _ClassRoomDetailsList.StudentsArray;
}
public ClassRoomDetailsList _ClassRoomDetailsList = new ClassRoomDetailsList();
有关 uwp 应用程序中的绑定的更多详细信息,请参阅主题数据绑定概述。
推荐阅读
- maven - 为模式生成代码时出错,升级 jooq 3.11
- spring - 使用 Spring 在标题中显示用户信息
- element-ui - el-table 中的 el-table-column 数组是否有属性
- java - 无法从广播接收器获得响应
- c# - Microsoft.Bcl.Async 包和现代 csproj
- ios - 使用 UIView 水平裁剪图像
- javascript - d3 两级嵌套数据绑定
- java - 使用 SuperCSV 的一个单元格中的多个字段
- android - 验证 ListView 适配器中的 EditText
- automated-tests - AWS Device Farm 上的 Appium 测试未按指定顺序执行