Pencere Yüksekliği = “Otomatik” beklendiği gibi çalışmıyor


223

Ne yapmaya çalışıyorum, açıkça bir yükseklik / genişlik (her iki değer atlandı veya olarak ayarlanmış Auto) olmayan bir pencere göstermektir . Pencerenin tüm otomatik kullanıcı boyutlarını otomatik olarak hesaplayarak boyutunu bulacağını tahmin ediyordum, ama bu aslında işe yaramıyor!

Bunun yerine büyük bir pencere alıyorum Actualwidthve Actualheightdeğerleri 512 (?!?!)

Pencere bildirimi:

<Window x:Class="Window3"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  Title="Window3" 
  Height="Auto">
<StackPanel>
    <Label>Window</Label>
</StackPanel>
</Window>

Bu pencereyi şu şekilde iletişim kutusu olarak gösteriliyor:

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles Button2.Click
    Dim dlg As New Window3
    dlg.ShowDialog()
End Sub

Bunun için bir çözüm var mı? Formdaki birçok denetim yapıcı parametrelerine göre daraltılacak ve formun gerçek boyutunu bulmaya çalışırken (ve çirkin) penceremin boyutunu açıkça ayarlamak istemiyorum.


7
Ayrıca pencereyi.WindowStartupLocation"CenterScreen"
Anders Lindén

Yanıtlar:


408

Pencerenin özelliğini ayarlayın SizeToContent="WidthAndHeight". Bu yardımcı olacaktır.


89
Yapıştır kopyalamak isteyen tembel insanlar için SizeToContent="WidthAndHeight";)
Tono Nam

4
Kullanmaya dikkat edin SizeToContent = "WidthAndHeight", Pencerenin içeriğinin boyutu ekran boyutundan daha fazla artarsa, pencere ekrandan taşabilir.
Kylo Ren

@KyloRen böylece bir MaxWidth veya MaxHeight sorunu önlemek için ayarlanmalıdır
Carlos Liu

@CarlosLiu uzun zaman, pratik dışı kaldım ve hatırlayamıyorum, ama evet mantıklı geliyor. bir demo deneyin :)
Kylo Ren

Bu harika ama ben hala merak ediyorum neden Height="Auto"ve Width="Auto"aynı şeyi başarmak değil mi? Tahmin ediyorum çünkü pencere içeriği bu ayarlarla dikkate alınmıyor.
Mike Lowery

7

Eski soru ama güncellenmiş bir cevap:

@ Muad'Dib'in cevabında önerdiği gibi:

ayarlamanız gerekir SizeToContent="WidthAndHeight".

Pencerenin içeriğinin boyutu ekran boyutundan daha fazla artarsa, pencere ekrandan taşabilir. Bu nedenle, şunları göz önünde bulundurmalısınız:

MaxWidth="600"
MaxHeight="400"

Ve MaxHeight="400"saygı duyulmadığında ne yapmalı ? ekran sınırı kadar büyür?
andrepaulo

3

Pencere yüksekliğini otomatik olarak ayarlayamazsınız, bunu yapmak için küçük bir numara kullanabilirsiniz, ana ana ızgara kabını adlandırın, yüksekliğini otomatik olarak ayarlayın ve pencere yüksekliğini ana ızgara yüksekliğine bağlayın


0

Yüklü olay pencereleri ile mevcut ekranda boyutu ayarlama

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.