WinForms 'DockStyle.Fill'in WPF eşdeğeri şöyledir:
HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
Bu, neredeyse kontroller için varsayılandır, bu nedenle genel olarak bir WPF kontrolünün üst konteynerini doldurması için hiçbir şey yapmanız gerekmez : Bunu otomatik olarak yaparlar. Bu, çocuklarını minimum boyuta sıkıştırmayan tüm kaplar için geçerlidir.
Yaygın hatalar
Şimdi HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
beklendiği gibi çalışmayı engelleyen birkaç yaygın hatayı açıklayacağım .
1. Açık Yükseklik veya Genişlik
Yaygın bir hata, bir kontrol için açıkça bir Genişlik veya Yükseklik belirtmektir. Yani eğer buna sahipseniz:
<Grid>
<Button Content="Why am I not filling the window?" Width="200" Height="20" />
...
</Grid>
Genişlik ve Yükseklik niteliklerini kaldırmanız yeterlidir:
<Grid>
<Button Content="Ahhh... problem solved" />
...
</Grid>
2. Panel sıkma kontrolünü minimum boyutta içerir
Diğer bir yaygın hata, kapsama panelinin kontrolünüzü gidebildiği kadar sıkı sıkıştırmasıdır. Örneğin dikey bir StackPanel, içeriğini her zaman dikey olarak gidebilecekleri kadar küçük sıkıştıracaktır:
<StackPanel>
<Button Content="Why am I squished flat?" />
</StackPanel>
Başka bir Panele geçin ve gitmekte fayda var:
<DockPanel>
<Button Content="I am no longer squished." />
</DockPanel>
Ayrıca, yüksekliği "Otomatik" olan herhangi bir Izgara satırı veya sütunu, içeriğini benzer şekilde bu yönde sıkıştıracaktır.
Çocuklarını sıkıştırmayan bazı kap örnekleri şunlardır:
- ContentControls altlarını asla sıkıştırmaz (buna Border, Button, CheckBox, ScrollViewer ve diğerleri dahildir)
- Tek sıralı ve sütunlu ızgara
- "*" Boyutlu satır ve sütunlara sahip ızgara
- DockPanel son çocuğunu sıkıştırmaz
- TabControl içeriğini sıkıştırmaz
Çocuklarını sıkıştıran bazı kap örnekleri şunlardır:
- StackPanel, Oryantasyon yönünde sıkıştırıyor
- "Otomatik" boyutlu satır veya sütun içeren ızgara, bu yönde sıkıştırır
- DockPanel, son alt öğesi hariç her şeyi yuva yönünde sıkıştırır
- TabControl başlığını sıkıştırır (sekmede görüntülenen)
3. Açık Yükseklik veya Genişlik daha dışarıda
Açık bir yükseklik ve genişlik verildiğinde Grid veya DockPanel'i kaç kez görüyorum, bunun gibi:
<Grid Width="200" Height="100">
<Button Content="I am unnecessarily constrainted by my containing panel" />
</Grid>
Genel olarak hiçbir Panele kesin bir Yükseklik veya Genişlik vermek istemezsiniz. Yerleşim sorunlarını teşhis ederken ilk adımım, bulabildiğim her açık Yükseklik veya Genişliği kaldırmaktır.
4. Pencere, olmaması gerektiğinde SizeToContent'tir
SizeToContent'i kullandığınızda, içeriğiniz minimum boyuta sıkıştırılacaktır. Birçok uygulamada bu çok kullanışlıdır ve doğru seçimdir. Ancak içeriğinizin "doğal" boyutu yoksa, büyük olasılıkla SizeToContent'i çıkarmak isteyeceksiniz.