Saya memiliki formulir WPF sederhana dengan Grid
pernyataan di formulir. Ini Grid
memiliki banyak baris:
<Grid.RowDefinitions>
<RowDefinition Height="Auto" MinHeight="30" />
<RowDefinition Height="Auto" Name="rowToHide" />
<RowDefinition Height="Auto" MinHeight="30" />
</Grid.RowDefinitions>
Baris bernama rowToHide
berisi beberapa bidang masukan dan saya ingin menyembunyikan baris ini setelah saya mendeteksi bahwa saya tidak memerlukan bidang ini. Cukup sederhana untuk hanya mengatur Visibility = Hidden
ke semua item di baris, tetapi baris tersebut masih membutuhkan ruang di Grid
. Saya mencoba mengatur Height = 0
ke item, tetapi tampaknya tidak berhasil.
Anda dapat memikirkannya seperti ini: Anda memiliki formulir, di sana Anda memiliki drop-down bertuliskan "Jenis Pembayaran", dan jika orang tersebut memilih "Tunai", Anda ingin menyembunyikan baris yang berisi detail Kartu. Ini bukanlah pilihan untuk memulai formulir dengan ini sudah tersembunyi.
Jawaban:
Row tidak memiliki properti Visibility, jadi seperti yang dikatakan orang lain, Anda perlu mengatur Height. Pilihan lainnya adalah menggunakan konverter, jika Anda membutuhkan fungsionalitas ini di banyak tampilan:
Dan kemudian dalam tampilan yang sesuai
<Grid.RowDefinition>
:sumber
BoolToGridLengthConverter
dan menambahkanVisibleLength
-Property, untuk kembali(bool)value == true
. Itulah bagaimana Anda juga dapat menggunakannya kembali denganAuto
dan Nilai-tetap apa pun.Solusi terbaik dan bersih untuk menciutkan baris atau kolom adalah dengan menggunakan DataTrigger, jadi dalam kasus Anda:
sumber
INotifyPropertyChanged
kode Anda di belakangnya agar berfungsi saatSomeBoolProperty
diubah :).Anda juga dapat melakukan ini dengan mereferensikan Baris dalam Petak dan kemudian mengubah Ketinggian baris itu sendiri.
XAML
VB.NET
Meskipun Penghilangan elemen di dalam Kotak juga berfungsi, ini sedikit lebih sederhana jika Anda memiliki banyak item di Kotak yang tidak memiliki elemen penutup yang dapat diciutkan. Ini akan menjadi alternatif yang baik.
sumber
RowDefinition
, seperti<RowDefinition Height="*" /><!-- Height set in code behind -->
Untuk referensi,
Visibility
adalah pencacahan System.Windows.Visibility tiga negara :Lihat tip ini dan tip lainnya di utas Tip dan Trik WPF .
sumber
Daripada mengutak-atik Baris Kisi, Anda dapat menyetel properti Visibilitas Kontrol (bidang dalam baris) ke "Diciutkan". Ini akan memastikan bahwa kontrol tidak mengambil ruang apa pun dan jika Anda memiliki Tinggi Baris Kisi = "Otomatis", baris tersebut akan disembunyikan karena semua kontrol dalam baris memiliki Visibility = "Collapsed".
Metode ini lebih baik karena Visibilitas kontrol dapat diikat ke beberapa properti dengan bantuan Konverter.
sumber
Cukup lakukan ini:
rowToHide.Height = new GridLength(0);
jika Anda akan menggunakan
visibility.Collapse
maka Anda harus mengaturnya untuk setiap anggota baris.sumber
Setel visibilitas konten baris ke
Visibility.Collapsed
daripada Tersembunyi. Ini akan membuat konten berhenti menghabiskan ruang, dan baris akan menyusut dengan semestinya.sumber
Saya memiliki ide serupa dengan mewarisi RowDefinition (hanya untuk kepentingan)
Sekarang Anda dapat menggunakannya sebagai berikut:
dan beralih dengan
sumber