Gambaran Umum ListView
ListView Kontrol menyediakan infrastruktur untuk menampilkan sekumpulan item data dalam menggunakan tata letak atau tampilan yang berbeda. Misalnya, pengguna mungkin ingin menampilkan item data dalam tabel dan juga untuk mengurutkan kolomnya.
Catatan
Jenis yang dirujuk dalam artikel ini tersedia di bagian Referensi kode.
Apa itu ListView?
ListView berasal dari ListBox. Biasanya, itemnya adalah anggota pengumpulan data dan direpresentasikan sebagai ListViewItem objek. A ListViewItem adalah ContentControl dan hanya dapat berisi satu elemen anak. Namun, elemen turunan tersebut dapat menjadi elemen visual apa pun.
Menentukan Mode Tampilan untuk ListView
Untuk menentukan mode tampilan untuk konten ListView kontrol, Anda mengatur View properti . Satu mode tampilan yang disediakan Windows Presentation Foundation (WPF) adalah GridView, yang menampilkan kumpulan item data dalam tabel yang memiliki kolom yang dapat disesuaikan.
Contoh berikut menunjukkan cara menentukan GridView untuk ListView kontrol yang menampilkan informasi karyawan.
<ListView ItemsSource="{Binding Source={StaticResource EmployeeInfoDataSource}}">
<ListView.View>
<GridView AllowsColumnReorder="true" ColumnHeaderToolTip="Employee Information">
<GridViewColumn DisplayMemberBinding="{Binding Path=FirstName}" Header="First Name" Width="100"/>
<GridViewColumn DisplayMemberBinding="{Binding Path=LastName}" Width="100">
<GridViewColumnHeader>Last Name
<GridViewColumnHeader.ContextMenu>
<ContextMenu MenuItem.Click="LastNameCM_Click" Name="LastNameCM">
<MenuItem Header="Ascending" />
<MenuItem Header="Descending" />
</ContextMenu>
</GridViewColumnHeader.ContextMenu>
</GridViewColumnHeader>
</GridViewColumn>
<GridViewColumn DisplayMemberBinding="{Binding Path=EmployeeNumber}" Header="Employee No." Width="100"/>
</GridView>
</ListView.View>
</ListView>
Ilustrasi berikut menunjukkan bagaimana data muncul untuk contoh sebelumnya.
Anda dapat membuat mode tampilan kustom dengan menentukan kelas yang mewarisi dari ViewBase kelas. Kelas ini ViewBase menyediakan infrastruktur yang Anda butuhkan untuk membuat tampilan kustom. Untuk informasi selengkapnya tentang cara membuat tampilan kustom, lihat Membuat Mode Tampilan Kustom untuk ListView.
Mengikat Data ke ListView
Items Gunakan properti dan ItemsSource untuk menentukan item untuk ListView kontrol. Contoh berikut mengatur properti ke ItemsSource kumpulan data yang disebut EmployeeInfoDataSource
.
<ListView ItemsSource="{Binding Source={StaticResource EmployeeInfoDataSource}}">
GridViewDalam , GridViewColumn objek terikat ke bidang data tertentu. Contoh berikut mengikat GridViewColumn objek ke bidang data dengan menentukan Binding untuk DisplayMemberBinding properti .
GridViewColumn gvc1 = new GridViewColumn();
gvc1.DisplayMemberBinding = new Binding("FirstName");
gvc1.Header = "FirstName";
gvc1.Width = 100;
Dim gvc1 As New GridViewColumn()
gvc1.DisplayMemberBinding = New Binding("FirstName")
gvc1.Header = "FirstName"
gvc1.Width = 100
<GridViewColumn DisplayMemberBinding="{Binding Path=FirstName}" Header="First Name" Width="100"/>
Anda juga dapat menentukan Binding sebagai bagian DataTemplate dari definisi yang Anda gunakan untuk menata sel dalam kolom. Dalam contoh berikut, yang DataTemplate diidentifikasi dengan set ResourceKeyBinding untuk .GridViewColumn Perhatikan bahwa contoh ini tidak menentukan DisplayMemberBinding karena melakukannya lebih diutamakan daripada CellTemplate.
<DataTemplate x:Key="myCellTemplateMonth">
<DockPanel>
<TextBlock Foreground="DarkBlue" HorizontalAlignment="Center">
<TextBlock.Text>
<Binding Path="Month"/>
</TextBlock.Text>
</TextBlock>
</DockPanel>
</DataTemplate>
<GridViewColumn Header="Month" Width="80"
CellTemplate="{StaticResource myCellTemplateMonth}"/>
Menata ListView yang Mengimplementasikan GridView
Kontrol ListView berisi ListViewItem objek, yang mewakili item data yang ditampilkan. Anda bisa menggunakan properti berikut untuk menentukan konten dan gaya item data:
ListView Pada kontrol, gunakan ItemTemplateproperti , ItemTemplateSelector, dan ItemContainerStyle .
ListViewItem Pada kontrol, gunakan ContentTemplate properti dan ContentTemplateSelector .
Untuk menghindari masalah perataan antara sel dalam GridView, jangan gunakan ItemContainerStyle untuk mengatur properti atau menambahkan konten yang memengaruhi lebar item dalam ListView. Misalnya, masalah perataan dapat terjadi saat Anda mengatur Margin properti di ItemContainerStyle. Untuk menentukan properti atau menentukan konten yang memengaruhi lebar item dalam GridView, gunakan properti GridView kelas dan kelas terkaitnya, seperti GridViewColumn.
Untuk informasi selengkapnya tentang cara menggunakan GridView dan kelas pendukungnya, lihat Gambaran Umum GridView.
Jika Anda menentukan ItemContainerStyle untuk ListView kontrol dan juga menentukan ItemTemplate, Anda harus menyertakan ContentPresenter dalam gaya agar ItemTemplate berfungsi dengan benar.
Jangan gunakan HorizontalContentAlignment properti dan VerticalContentAlignment untuk ListView konten yang GridViewditampilkan oleh . Untuk menentukan perataan konten dalam kolom GridView, tentukan CellTemplate.
Berbagi Mode Tampilan yang Sama
Dua ListView kontrol tidak dapat berbagi mode tampilan yang sama secara bersamaan. Jika Anda mencoba menggunakan mode tampilan yang sama dengan lebih dari satu ListView kontrol, pengecualian terjadi.
Untuk menentukan mode tampilan yang dapat digunakan secara bersamaan oleh lebih dari satu ListView, gunakan templat atau gaya.
Membuat Mode Tampilan Kustom
Tampilan yang disesuaikan seperti GridView berasal dari ViewBase kelas abstrak, yang menyediakan alat untuk menampilkan item data yang diwakili sebagai ListViewItem objek.
Referensi kode
Objek berikut dirujuk dalam artikel ini:
EmployeeInfoDataSource
pengumpulan data. Jika Anda menggunakan Visual Basic .NET,Window
elemen dinyatakan sedikit berbeda dari apa yang Anda lihat dalam kode contoh:<Window x:Class="SDKSample.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Loaded="OnLoad" xmlns:ds="clr-namespace:SDKSample"> <Window.Resources> <ObjectDataProvider x:Key="EmployeeInfoDataSource" ObjectType="{x:Type ds:myEmployees}" /> </Window.Resources>
EmployeeInfo
kelas, yang digunakan sebagai jenis untuk pengumpulanEmployeeInfoDataSource
data.public class EmployeeInfo { private string _firstName; private string _lastName; private string _employeeNumber; public string FirstName { get {return _firstName;} set {_firstName = value;} } public string LastName { get {return _lastName;} set {_lastName = value;} } public string EmployeeNumber { get {return _employeeNumber;} set {_employeeNumber = value;} } public EmployeeInfo(string firstname, string lastname, string empnumber) { _firstName = firstname; _lastName = lastname; _employeeNumber = empnumber; } }
Public Class EmployeeInfo Private _firstName As String Private _lastName As String Private _employeeNumber As String Public Property FirstName() As String Get Return _firstName End Get Set(ByVal value As String) _firstName = value End Set End Property Public Property LastName() As String Get Return _lastName End Get Set(ByVal value As String) _lastName = value End Set End Property Public Property EmployeeNumber() As String Get Return _employeeNumber End Get Set(ByVal value As String) _employeeNumber = value End Set End Property Public Sub New(ByVal firstname As String, ByVal lastname As String, ByVal empnumber As String) _firstName = firstname _lastName = lastname _employeeNumber = empnumber End Sub End Class
Baca juga
.NET Desktop feedback