ListView là một điều khiển cho phép bạn tự động hiển thị một danh sách các mục để người dùng có thể di chuyển qua rằng danh sách các mục để xem họ và tìm thấy bất cứ điều gì họ có thể cần. Nó thực sự đơn giản để định nghĩa nó trong XAML:.
<ListView x:Name="StudentsList" />
Bây giờ, giả sử bạn có một danh sách các sinh viên đại học Mỗi học sinh được thể hiện với một class Student đơn giản
public class Student
{
public string Name { get; set; }
public int Age { get; set; }
}
có c. có thể là hàng chục, hàng trăm hoặc hàng ngàn sinh viên, vì vậy bạn không thể xác định giao diện người dùng tĩnh. Bạn thường giữ cho những sinh viên đó trong một số loại danh sách/bộ sưu tập nào đó ở phía sau mã. Bạn lấy chúng từ các nguồn khác nhau - cơ sở dữ liệu, dịch vụ web, hoặc mã hóa cứng nó, như tôi sẽ làm gì bây giờ cho các mục đích giới thiệu:
private List<Student> listOfStudents = new List<Student>();
public MainPage()
{
this.InitializeComponent();
listOfStudents.Add(new Student { Name = "John", Age = 20 });
listOfStudents.Add(new Student { Name = "Bob", Age = 21 });
listOfStudents.Add(new Student { Name = "Steve", Age = 19 });
listOfStudents.Add(new Student { Name = "Marko", Age = 18 });
listOfStudents.Add(new Student { Name = "Igor", Age = 20 });
listOfStudents.Add(new Student { Name = "Ivan", Age = 20 });
listOfStudents.Add(new Student { Name = "Nina", Age = 21 });
listOfStudents.Add(new Student { Name = "Paul", Age = 20 });
listOfStudents.Add(new Student { Name = "Ana", Age = 23 });
listOfStudents.Add(new Student { Name = "Ivana", Age = 20 });
StudentsList.ItemsSource = listOfStudents;
}
Danh sách đó/bộ sưu tập đóng vai trò như một nguồn mục cho ListView, vì vậy bạn thiết lập thuộc tính ItemsSource
của ListView để kết nối hai và hiển thị danh sách trong giao diện người dùng. Sử dụng một ListView tất cả các mục được trả tự động bất kể số lượng các mục.
Nếu chúng ta chạy ứng dụng bây giờ, nó sẽ là khá xấu xí mặc dù:
Bạn cần phải xác định một DataTemplate
để làm cho nó đẹp hơn. Vì mỗi học sinh đều có tên và tuổi, bạn sẽ muốn sử dụng những đặc tính đó để làm cho nó đẹp hơn. Điều này DataTemplate
được gán cho ListView.ItemTemplate
thuộc tính và ListView sẽ sử dụng nó cho mỗi và mọi mục trong danh sách.
<ListView x:Name="StudentsList">
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Name}"
Margin="20,0,20,8"
FontSize="24"
FontStyle="Italic"
FontWeight="SemiBold"
Foreground="DarkBlue" />
<TextBlock Text="{Binding Age}"
Margin="20,0,20,8"
FontSize="16"
Foreground="DarkGray"
Opacity="0.8" />
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
Xem, tôi đã sử dụng DataTemplate để xác định mà tài sản để hiển thị và làm thế nào để làm cho họ - Tôi chơi với cỡ chữ, màu chữ, lề vv Tôi sẽ thừa nhận đây không phải là thực sự là đẹp, nhưng tôi chắc chắn bạn sẽ nhận được điểm:
một điều nữa bạn sẽ nhận thấy là tôi sử dụng một ràng buộc xây dựng như thế này:
<TextBlock Text="{Binding Name}" ... />
basica này lly có nghĩa là: Kiểm tra xem đối tượng có thuộc tính Name
và nếu có, hãy hiển thị đối tượng đó là TextBlock.Text
.
Lưu ý rằng mọi thứ có thể trở nên phức tạp hơn để bạn có thể sử dụng các mẫu khác nhau cho các mục khác nhau trong một danh sách, v.v ... nhưng không nằm trong phạm vi câu hỏi mà tôi nghĩ.
TLDR: ListView
tự động hiển thị danh sách các mục. ItemsSource
xác định nguồn mục cho rằng ListView
. DataTemplate
xác định mẫu sẽ được sử dụng để hiển thị nội dung nào đó. Điều này DataTemplate
được gán cho ItemTemplate
thuộc tính của ListView
để ListView
biết rằng nó nên sử dụng chính xác mẫu đó để hiển thị các mục của nó.
Tuyệt vời! Cảm ơn Allot. –
Tên "MenuItem" không tồn tại trong không gian tên "sử dụng SoundDemo.Model" .Là một lỗi rất bình thường mà tôi tiếp tục nhận được và ở đây tôi cũng hiểu được lỗi, Nếu tôi điều chỉnh lại và thử khôi phục xung đột tôi vẫn có thể 't giải quyết vấn đề. [Bất kỳ đề xuất nào về phần này?] –
Chế độ xem danh sách phải có thể cuộn được mặc định là không may. –