Chiều cao cửa sổ = Số tự động không hoạt động như mong đợi


223

Những gì tôi đang cố gắng làm là hiển thị một cửa sổ, không rõ ràng có chiều cao / chiều rộng, (cả hai giá trị được bỏ qua hoặc được đặt thành Auto). Tôi đã đoán rằng cửa sổ sẽ tìm ra kích thước của nó bằng cách tự động tính toán tất cả các kích thước điều khiển người dùng có chứa, nhưng điều này không thực sự hoạt động!

Thay vào đó, tôi nhận được một cửa sổ lớn ActualwidthActualheightcả hai giá trị được đặt thành 512 (?!?!)

Khai báo cửa sổ:

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

Hiển thị cửa sổ này dưới dạng hộp thoại qua:

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

đó có phải là cách giải quyết? Tôi không muốn đặt rõ ràng kích thước cửa sổ của mình vì nhiều điều khiển trong biểu mẫu sẽ được thu gọn dựa trên các tham số của hàm tạo và cố gắng tìm kích thước thực của biểu mẫu sẽ rất khó (và xấu).


7
Bạn cũng có thể muốn căn giữa cửa sổ với .WindowStartupLocationthiết lập thành"CenterScreen"
Anders Lindén

Câu trả lời:


408

Đặt thuộc tính của cửa sổ SizeToContent="WidthAndHeight". Điều này sẽ giúp.


89
Dành cho những người lười biếng muốn sao chép dán SizeToContent="WidthAndHeight";)
Tono Nam

4
Cẩn thận khi sử dụng SizeToContent = "WidthAndHeight", Nếu kích thước của nội dung cửa sổ tăng hơn kích thước màn hình, cửa sổ có thể tràn ra khỏi màn hình.
Kylo Ren

@KyloRen vì vậy nên đặt MaxWidth hoặc MaxHeight để tránh sự cố
Carlos Liu

@CarlosLiu lâu rồi, tôi không tập luyện và không thể nhớ, nhưng vâng, nghe có vẻ hợp lý. thử trong bản demo :)
Kylo Ren

Điều này thật tuyệt, nhưng tôi vẫn tò mò tại sao Height="Auto"Width="Auto"không hoàn thành điều tương tự? Tôi đoán vì nội dung cửa sổ không được xem xét với các cài đặt này.
Mike Lowery

7

Câu hỏi cũ nhưng một câu trả lời cập nhật:

Như @ Muad'Dib đã đề xuất trong câu trả lời của mình:

bạn nên thiết lập SizeToContent="WidthAndHeight".

Nếu kích thước của nội dung cửa sổ tăng hơn kích thước màn hình, cửa sổ có thể tràn ra khỏi màn hình. Vì vậy, bạn phải xem xét:

MaxWidth="600"
MaxHeight="400"

Và phải làm gì khi MaxHeight="400"không được tôn trọng? Nó phát triển cho đến khi giới hạn màn hình?
andrepaulo

3

Chà, bạn không thể đặt chiều cao cửa sổ thành tự động, để làm điều này, bạn có thể sử dụng một mẹo nhỏ, đặt tên cho thùng chứa lưới chính, đặt chiều cao của nó thành tự động sau đó liên kết chiều cao cửa sổ với chiều cao của lưới chính


0

Đặt kích thước trong màn hình hiện tại với các cửa sổ sự kiện được tải

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.