Tinggi otomatis WPF dalam kode


101

Bagaimana cara menetapkan nilai Heightproperti kontrol WPF dalam kode C # menjadi " Auto"?

<Grid.RowDefinitions>
    <RowDefinition />
    <RowDefinition Height="Auto" />
    <RowDefinition />
    <RowDefinition Height="Auto" />
    <RowDefinition />
    <RowDefinition Height="Auto" />
    <RowDefinition />
    <RowDefinition Height="Auto" />
    <RowDefinition />
</Grid.RowDefinitions>

Saya ingin mereproduksi perilaku ini dalam kode di belakang. Ada ide?

Jawaban:


144

Mungkin tautan ini akan membantu Anda.

Terkadang, Anda mungkin ingin mengatur Tinggi atau Lebar secara terprogram dari elemen WPF ke dalam kode Otomatis. Untuk melakukan ini, cukup gunakan nilai Double.NaN (Bukan Angka).

Misalnya, di C #:

this.txtName.Width = Double.NaN;


1
Jangan bekerja dalam kasus saya. Tapi saya mengubah lebar tinggi melalui perilaku (ekspresi campuran 4.0 lib)
Franck

1
Tautan sudah mati tetapi Anda dapat mengakses versi yang diarsipkan di sini
akjoshi

2
Jawaban Nimrod jauh lebih eksplisit dan lebih mudah dipahami.
David

Mendapatkan 'NaN' bukanlah nilai yang valid untuk properti 'MaxWidth'
Damitha

Saya merasa jawaban Nimrod adalah yang terbersih dan sekarang harus menjadi jawaban yang diterima (tidak yakin GridLength.Automungkin di masa lalu). Ada juga GridLength.Staruntuk mengisi area yang tersisa.
Wolfgang Schreurs

111

Kamu bisa memakai

RowDefinition rd = new RowDefinition ();  
rd.Height = GridLength.Auto;  
ContentGrid.RowDefinitions.Add (rd);

8
Adakah perbedaan antara jawaban ini dan jawaban yang diterima? Karena jika tidak, ini harus menjadi jawaban teratas untuk tidak mengelak dari kerangka.
estebro

3
Menurut reflektor, GridLength.Auto adalah GridLength baru (1.0, GridUnitType.Auto); oleh karena itu tidak persis sama dengan jawaban yang diterima, tetapi jauh lebih mudah dibaca.
helios456

Ini bukanlah solusi yang umum seperti jawaban yang diterima. Tidak semua kontrol mengimplementasikan properti Height sebagai objek 'GridLength' (struct). Bagi mereka yang hanya menggunakan dua kali lipat jawaban ini tidak berfungsi. Dan pertanyaannya tidak menanyakan secara umum, itu hanya menggunakan kotak sebagai contoh.
UuDdLrLrSs
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.