Saya memiliki DataGrid dengan kolom pertama sebagai kolom teks dan kolom kedua sebagai kolom CheckBox. Yang saya inginkan adalah, jika saya mengklik kotak centang. Itu harus diperiksa.
Tetapi, dibutuhkan dua klik untuk dipilih, untuk klik pertama sel dipilih, untuk klik kedua kotak centang dicentang. Cara membuat kotak centang untuk dicentang / tidak dicentang dengan satu klik.
Saya menggunakan WPF 4.0. Kolom di dalam DataGrid dibuat Otomatis.
wpf
datagrid
wpfdatagrid
Pangeran Ashitaka
sumber
sumber
Jawaban:
Untuk kotak centang DataGrid klik tunggal, Anda bisa memasukkan kontrol kotak centang biasa ke dalam
DataGridTemplateColumn
dan mengaturUpdateSourceTrigger=PropertyChanged
.sumber
DataGridTemplateColumn.CellTemplate
dengan Binding Anda sendiri dan itu akan berhasil !! Jawaban dari @ weidian-huang membantu saya untuk memahami itu, terima kasih!Saya memecahkan ini dengan Style berikut:
Tentu saja mungkin untuk mengadaptasi ini lebih lanjut untuk kolom tertentu ...
sumber
Pertama, saya tahu ini adalah pertanyaan yang cukup lama tetapi saya masih berpikir saya akan mencoba dan menjawabnya.
Saya memiliki masalah yang sama beberapa hari yang lalu dan menemukan solusi singkat yang mengejutkan untuk itu (lihat blog ini ). Pada dasarnya, yang perlu Anda lakukan adalah mengganti
DataGridCheckBoxColumn
definisi di XAML Anda dengan yang berikut:Kelebihan dari solusi ini jelas - hanya XAML; sehingga secara efektif menahan Anda dari membebani kode-kembali Anda dengan logika UI tambahan dan membantu Anda mempertahankan status Anda di mata MVVM fanatik;).
sumber
Untuk membuat jawaban Konstantin Salavatov bekerja dengan
AutoGenerateColumns
, tambahkan pengendali acara keDataGrid
'sAutoGeneratingColumn
dengan kode berikut:Ini akan membuat semua
DataGrid
kolom kotak centang yang dibuat secara otomatis menjadi "satu klik" dapat diedit.sumber
Didasarkan pada blog yang dirujuk dalam jawaban Goblin, tetapi dimodifikasi agar berfungsi di .NET 4.0 dan dengan Mode Pemilihan Baris.
Perhatikan bahwa itu juga mempercepat pengeditan DataGridComboBoxColumn - dengan memasukkan mode edit dan menampilkan dropdown pada klik tunggal atau input teks.
XAML:
Kode di belakang:
sumber
Saya sudah mencoba saran-saran ini, dan banyak yang lain yang saya temukan di situs lain, tetapi tidak ada yang bekerja untuk saya. Pada akhirnya, saya menciptakan solusi berikut.
Saya telah membuat kontrol yang diwarisi DataGrid saya sendiri, dan cukup menambahkan kode ini ke dalamnya:
Apa yang dilakukan semua ini?
Nah, setiap kali kita mengklik sel mana pun di DataGrid kita, kita melihat apakah sel itu berisi kontrol kotak centang di dalamnya. Jika tidak , maka kita akan mengatur fokus ke yang kotak centang dan beralih nilai itu .
Ini sepertinya bekerja untuk saya, dan merupakan solusi yang bagus dan mudah digunakan kembali.
Sangat mengecewakan bahwa kita perlu menulis kode untuk melakukan ini. Penjelasan bahwa klik mouse pertama (pada kotak centang DataGrid) "diabaikan" karena WPF menggunakannya untuk memasukkan baris ke mode Edit mungkin terdengar logis, tetapi di dunia nyata, ini bertentangan dengan cara setiap aplikasi nyata bekerja.
Jika pengguna melihat kotak centang di layar mereka, mereka harus dapat mengkliknya sekali untuk mencentang / menghapusnya. Akhir dari cerita.
sumber
Ada solusi yang lebih sederhana di sini.
Jika Anda gunakan
DataGridCheckBoxColumn
untuk mengimplementasikan, klik pertama adalah untuk fokus, klik kedua adalah untuk memeriksa.Tetapi menggunakan
DataGridTemplateColumn
untuk mengimplementasikan perlu satu klik saja.Perbedaan penggunaan
DataGridComboboxBoxColumn
dan implementasi olehDataGridTemplateColumn
juga serupa.sumber
Saya menyelesaikannya dengan ini:
Kotak centang aktif dengan sekali klik!
sumber
Berdasarkan jawaban Jim Adorno dan komentar di posnya, ini adalah solusi dengan
MultiTrigger
:sumber
Namun solusi sederhana lainnya adalah menambahkan gaya ini ke DataGridColumn Anda. Badan gaya Anda bisa kosong.
sumber
sumber