Tinggi Jendela = "Otomatis" tidak berfungsi seperti yang diharapkan

223

Apa yang saya coba lakukan adalah menampilkan jendela, yang tidak secara eksplisit memiliki tinggi / lebar, (kedua nilai dihilangkan atau disetel ke Auto). Saya menduga bahwa jendela akan mengetahui ukurannya dengan otomatis - menghitung semua ukuran kontrol pengguna yang terkandung, tetapi ini sebenarnya tidak berhasil!

Alih-alih, saya mendapatkan jendela besar dengan Actualwidthdan Actualheightnilai - nilai keduanya diatur ke 512 (?!?!)

Deklarasi jendela:

<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>

Menampilkan jendela ini sebagai dialog melalui:

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

Apakah ada solusi untuk ini? Saya tidak ingin secara eksplisit mengatur ukuran jendela saya karena banyak kontrol dalam formulir akan diciutkan berdasarkan parameter konstruktor, dan mencoba menemukan ukuran sebenarnya dari bentuk itu akan rumit (dan jelek).

Entrodus
sumber
7
Anda mungkin juga ingin memusatkan jendela dengan .WindowStartupLocationset ke"CenterScreen"
Anders Lindén

Jawaban:

408

Setel properti jendela SizeToContent="WidthAndHeight". Ini akan membantu.

Muad'Dib
sumber
89
Untuk orang-orang malas yang ingin menyalin tempel SizeToContent="WidthAndHeight";)
Tono Nam
4
Hati-hati menggunakan SizeToContent = "WidthAndHeight", Jika ukuran konten window bertambah lebih dari ukuran layar, jendela bisa meluap dari layar.
Kylo Ren
@KyloRen sehingga MaxWidth atau MaxHeight harus diatur untuk menghindari masalah
Carlos Liu
@CarlosLiu lama, saya keluar dari latihan dan tidak bisa mengingat, tapi ya secara logis kedengarannya benar. coba dalam demo :)
Kylo Ren
Ini bagus, tapi saya masih penasaran mengapa Height="Auto"dan Width="Auto"tidak mencapai hal yang sama? Saya menduga karena konten jendela tidak dipertimbangkan dengan pengaturan ini.
Mike Lowery
7

Pertanyaan lama tetapi jawaban yang diperbarui:

Seperti yang disarankan oleh @ Muad'Dib dalam jawabannya:

Anda harus mengatur SizeToContent="WidthAndHeight".

Jika ukuran konten jendela meningkat lebih dari ukuran layar, jendela dapat meluap dari layar. Jadi, Anda harus mempertimbangkan:

MaxWidth="600"
MaxHeight="400"
Vishal
sumber
Dan apa yang harus dilakukan ketika MaxHeight="400"tidak dihormati? itu tumbuh sampai batas layar?
andrepaulo
3

Nah Anda tidak dapat mengatur tinggi jendela ke otomatis, untuk melakukan ini Anda dapat menggunakan sedikit trik, beri nama wadah kotak utama, atur tingginya ke otomatis lalu ikat ketinggian jendela ke ketinggian kotak utama

Feelbad Soussi Wolfgun DZ
sumber
0

Atur ukuran di layar saat ini dengan jendela acara yang dimuat

Hooman
sumber