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?

Karim Agha
sumber

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;

Zach Johnson
sumber
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);
Nimrod Shory
sumber
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