Cara: Menambahkan Detail Baris ke Kontrol DataGrid
Saat menggunakan DataGrid kontrol, Anda bisa mengkustomisasi presentasi data dengan menambahkan bagian detail baris. Menambahkan bagian detail baris memungkinkan Anda mengelompokkan beberapa data dalam templat yang secara opsional terlihat atau diciutkan. Misalnya, Anda dapat menambahkan detail baris ke yang DataGrid hanya menyajikan ringkasan data untuk setiap baris di DataGrid, tetapi menyajikan lebih banyak bidang data saat pengguna memilih baris. Anda menentukan templat untuk bagian detail baris di RowDetailsTemplate properti . Ilustrasi berikut ini memperlihatkan contoh bagian detail baris.
Anda menentukan templat detail baris sebagai XAML sebaris atau sebagai sumber daya. Kedua pendekatan ditunjukkan dalam prosedur berikut. Templat data yang ditambahkan sebagai sumber daya dapat digunakan di seluruh proyek tanpa membuat ulang templat. Templat data yang ditambahkan sebagai XAML sebaris hanya dapat diakses dari kontrol tempat templat tersebut ditentukan.
Untuk menampilkan detail baris dengan menggunakan XAML sebaris
Buat yang DataGrid menampilkan data dari sumber data.
DataGrid Dalam elemen , tambahkan RowDetailsTemplate elemen .
DataTemplate Buat yang menentukan tampilan bagian detail baris.
XAML berikut menunjukkan DataGrid dan cara menentukan RowDetailsTemplate sebaris. menampilkan DataGrid tiga nilai di setiap baris dan tiga nilai lagi saat baris dipilih.
<Window x:Class="WpfApplication1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="525" Loaded="Window_Loaded"> <Grid> <DataGrid Name="dataGrid1" IsReadOnly="True" AutoGenerateColumns="False" > <DataGrid.Columns> <DataGridTextColumn Header="Company Name" Binding="{Binding CompanyName}"></DataGridTextColumn> <DataGridTextColumn Header="Contact First Name" Binding="{Binding FirstName}"></DataGridTextColumn> <DataGridTextColumn Header="Contact Last Name" Binding="{Binding LastName}"></DataGridTextColumn> </DataGrid.Columns> <DataGrid.RowDetailsTemplate> <DataTemplate> <Border BorderThickness="0" Background="BlanchedAlmond" Padding="10"> <StackPanel Orientation="Vertical"> <StackPanel Orientation="Horizontal"> <TextBlock FontSize="12" Text="Email: " VerticalAlignment="Center" /> <TextBlock FontSize="16" Foreground="MidnightBlue" Text="{Binding EmailAddress}" VerticalAlignment="Center" /> </StackPanel> <StackPanel Orientation="Horizontal"> <TextBlock FontSize="12" Text="Phone: " VerticalAlignment="Center" /> <TextBlock FontSize="16" Foreground="MidnightBlue" Text="{Binding Phone}" VerticalAlignment="Center" /> </StackPanel> <StackPanel Orientation="Horizontal"> <TextBlock FontSize="12" Text="Sales Person: " VerticalAlignment="Center" /> <TextBlock FontSize="16" Foreground="MidnightBlue" Text="{Binding SalesPerson}" VerticalAlignment="Center" /> </StackPanel> </StackPanel> </Border> </DataTemplate> </DataGrid.RowDetailsTemplate> </DataGrid> </Grid> </Window>
Kode berikut menunjukkan kueri yang digunakan untuk memilih data yang ditampilkan di DataGrid. Dalam contoh ini, kueri memilih data dari entitas yang berisi informasi pelanggan.
private void Window_Loaded(object sender, RoutedEventArgs e) { AdventureWorksLT2008Entities advenWorksEntities = new AdventureWorksLT2008Entities(); ObjectQuery<Customer> customers = advenWorksEntities.Customers; var query = from customer in customers orderby customer.CompanyName select new { customer.LastName, customer.FirstName, customer.CompanyName, customer.Title, customer.EmailAddress, customer.Phone, customer.SalesPerson }; dataGrid1.ItemsSource = query.ToList(); }
Dim advenWorksEntities As AdventureWorksLT2008Entities = New AdventureWorksLT2008Entities Private Sub Window_Loaded(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles MyBase.Loaded Dim customers As ObjectQuery(Of Customer) = advenWorksEntities.Customers Dim query = _ From customer In customers _ Order By customer.CompanyName _ Select _ customer.LastName, _ customer.FirstName, _ customer.CompanyName, _ customer.Title, _ customer.EmailAddress, _ customer.Phone, _ customer.SalesPerson dataGrid1.ItemsSource = query.ToList() End Sub
Untuk menampilkan detail baris dengan menggunakan sumber daya
Buat yang DataGrid menampilkan data dari sumber data.
Resources Tambahkan elemen ke elemen akar, seperti Window kontrol atau Page kontrol, atau tambahkan Resources elemen ke Application kelas dalam file App.xaml (atau Application.xaml).
Dalam elemen sumber daya, buat DataTemplate yang menentukan tampilan bagian detail baris.
XAML berikut menunjukkan yang RowDetailsTemplate ditentukan di Application kelas .
<Application.Resources> <DataTemplate x:Key="CustomerDetail"> <Border BorderThickness="0" Background="BlanchedAlmond" Padding="10"> <StackPanel Orientation="Vertical"> <StackPanel Orientation="Horizontal"> <TextBlock FontSize="12" Text="Email: " VerticalAlignment="Center" /> <TextBlock FontSize="16" Foreground="MidnightBlue" Text="{Binding EmailAddress}" VerticalAlignment="Center" /> </StackPanel> <StackPanel Orientation="Horizontal"> <TextBlock FontSize="12" Text="Phone: " VerticalAlignment="Center" /> <TextBlock FontSize="16" Foreground="MidnightBlue" Text="{Binding Phone}" VerticalAlignment="Center" /> </StackPanel> <StackPanel Orientation="Horizontal"> <TextBlock FontSize="12" Text="Sales Person: " VerticalAlignment="Center" /> <TextBlock FontSize="16" Foreground="MidnightBlue" Text="{Binding SalesPerson}" VerticalAlignment="Center" /> </StackPanel> </StackPanel> </Border> </DataTemplate> </Application.Resources>
DataTemplatePada , atur x:Key Directive ke nilai yang secara unik mengidentifikasi templat data.
DataGrid Dalam elemen , atur RowDetailsTemplate properti ke sumber daya yang ditentukan dalam langkah-langkah sebelumnya. Tetapkan sumber daya sebagai sumber daya statis.
XAML berikut menunjukkan properti yang RowDetailsTemplate diatur ke sumber daya dari contoh sebelumnya.
<DataGrid Name="dataGrid1" IsReadOnly="True" AutoGenerateColumns="False" RowDetailsTemplate="{StaticResource CustomerDetail}" > <DataGrid.Columns> <DataGridTextColumn Header="Company Name" Binding="{Binding CompanyName}"></DataGridTextColumn> <DataGridTextColumn Header="Contact First Name" Binding="{Binding FirstName}"></DataGridTextColumn> <DataGridTextColumn Header="Contact Last Name" Binding="{Binding LastName}"></DataGridTextColumn> </DataGrid.Columns> </DataGrid>
Untuk mengatur visibilitas dan mencegah pengguliran horizontal untuk detail baris
Jika diperlukan, atur properti ke RowDetailsVisibilityModeDataGridRowDetailsVisibilityMode nilai.
Secara default, nilai diatur ke VisibleWhenSelected. Anda dapat mengaturnya ke Visible untuk menampilkan detail untuk semua baris atau Collapsed untuk menyembunyikan detail untuk semua baris.
Jika diperlukan, atur AreRowDetailsFrozen properti ke
true
untuk mencegah bagian detail baris menggulir secara horizontal.
.NET Desktop feedback
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk