Kodda WPF Otomatik yükseklik


102

HeightC # kodundaki bir WPF denetiminin özelliğinin değerini " Auto" olarak nasıl ayarlayabilirim ?

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

Bu davranışı arkasındaki kodda yeniden oluşturmak istiyorum. Herhangi bir fikir?

Yanıtlar:


146

Belki bu bağlantı size yardımcı olacaktır.

Bazen, bir WPF öğesinin Yüksekliğini veya Genişliğini kodda Otomatik olarak ayarlamak isteyebilirsiniz. Bunu yapmak için Double.NaN (Sayı Değil) değerini kullanın.

Örneğin, C # 'da:

this.txtName.Width = Double.NaN;


1
Benim durumumda çalışmayın. Ama davranışlar aracılığıyla yükseklik genişliğini değiştiriyorum (ifade karışımı 4.0 lib)
Franck

1
Bağlantı
kesildi

2
Nemrut'un cevabı çok daha açık ve anlaşılması daha kolay.
David

'NaN' almak, 'MaxWidth' özelliği için geçerli bir değer değil
Damitha

Nemrut'un cevabının en temiz olduğunu ve şimdi kabul edilen cevap olduğunu hissediyorum ( GridLength.Autogeçmişte mümkün olup olmadığından emin değilim ). GridLength.StarKalan alanı doldurmak için de var .
Wolfgang Schreurs

111

Kullanabilirsiniz

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

8
Bu cevap ile kabul edilen cevap arasında herhangi bir fark var mı? Çünkü değilse, çerçeveyi atlatmamak için en iyi cevap bu olmalıdır.
estebro

3
Reflektöre göre GridLength.Auto, yeni GridLength (1.0, GridUnitType.Auto); bu nedenle kabul edilen cevaba tam olarak eşdeğer değil, ancak çok daha okunaklı.
helios456

Bu, kabul edilen yanıt kadar genel bir çözüm değildir. Tüm kontroller bir Yükseklik özelliğini bir 'GridLength' nesnesi (yapı) olarak uygulamaz. Sadece iki katını kullananlar için bu cevap işe yaramıyor. Ve soru genel olarak sormuyordu, sadece örnek olarak bir tablo kullandı.
UuDdLrLrSs
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.