Saya telah mengatur itemsource dari WPF Datagrid saya ke Daftar Objek yang dikembalikan dari DAL saya. Saya juga menambahkan kolom tambahan yang berisi tombol, xaml di bawah.
<toolkit:DataGridTemplateColumn MinWidth="100" Header="View">
<toolkit:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Click="Button_Click">View Details</Button>
</DataTemplate>
</toolkit:DataGridTemplateColumn.CellTemplate>
</toolkit:DataGridTemplateColumn>
Ini membuatnya baik-baik saja. Namun pada metode Button_Click , adakah cara agar saya bisa mendapatkan baris di datagrid tempat tombol berada? Lebih khusus lagi, salah satu properti objek saya adalah "Id", dan saya ingin meneruskan ini ke konstruktor formulir lain di event handler.
private void Button_Click(object sender, RoutedEventArgs e)
{
//I need to know which row this button is on so I can retrieve the "id"
}
Mungkin saya membutuhkan sesuatu yang ekstra di xaml saya, atau mungkin saya akan melakukannya secara tidak langsung? Setiap bantuan / saran dihargai.
Cara lain yang saya suka untuk melakukan ini adalah dengan mengikat ID ke properti CommandParameter tombol:
Kemudian Anda dapat mengaksesnya seperti itu dalam kode:
sumber
CommandParameter
mungkin bukan tujuan penggunaan properti, tetapi secara semantik, ini lebih berarti daripada menggunakanTag
dan lebih sederhana daripada mengambil ID dari objek terikat di handler. Jika Anda lebih suka Perintah, pendekatan itu baik-baik saja, tetapi mengapa menambahkan kompleksitas jika Anda tidak akan menggunakannya?Cara lain yang mengikat ke parameter perintah DataContext dan menghormati MVVM seperti Jobi Joy mengatakan tombol mewarisi baris formulir datacontext.
Tombol di XAML
Implementasi perintah
sumber
sumber
Jika DataGrid's DataContext Anda adalah objek DataView (properti DefaultView dari DataTable), Anda juga bisa melakukan ini:
sumber
e.OriginalSource
. bukannyae.Source
.