Window Height =“ อัตโนมัติ” ไม่ทำงานอย่างที่คาดไว้


223

สิ่งที่ฉันพยายามทำคือแสดงหน้าต่างที่ไม่มีความสูง / ความกว้างอย่างชัดเจน (ค่าทั้งสองถูกละไว้หรือตั้งค่าเป็นAuto) ฉันเดาว่าหน้าต่างจะหาขนาดของมันโดยอัตโนมัติ - คำนวณขนาดการควบคุมผู้ใช้ทั้งหมดที่มี แต่สิ่งนี้ไม่ได้ผลจริง!

แต่ฉันได้รับหน้าต่างบานใหญ่ActualwidthและActualheightตั้งค่าเป็น 512 (?!?!)

ประกาศหน้าต่าง:

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

แสดงหน้าต่างนี้เป็นกล่องโต้ตอบผ่าน:

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

มีวิธีแก้ปัญหาสำหรับเรื่องนี้หรือไม่? ฉันไม่ต้องการกำหนดขนาดของหน้าต่างของฉันอย่างชัดเจนเนื่องจากตัวควบคุมหลายตัวในแบบฟอร์มจะถูกยุบตามพารามิเตอร์ตัวสร้างและการพยายามหาขนาดที่แท้จริงของแบบฟอร์มจะยุ่งยาก (และน่าเกลียด)


7
คุณอาจต้องการจัดกึ่งกลางหน้าต่างโดย.WindowStartupLocationตั้งค่าเป็น"CenterScreen"
Anders Lindén

คำตอบ:


408

SizeToContent="WidthAndHeight"ตั้งค่าคุณสมบัติของหน้าต่าง สิ่งนี้น่าจะช่วยได้


89
สำหรับคนขี้เกียจที่ต้องการคัดลอกแปะSizeToContent="WidthAndHeight")
Tono Nam

4
ระมัดระวังในการใช้ SizeToContent = "WidthAndHeight", หากขนาดของเนื้อหาของหน้าต่างเพิ่มขึ้นมากกว่าขนาดหน้าจอหน้าต่างสามารถล้นได้จากหน้าจอ
Kylo Ren

@KyloRen ดังนั้น MaxWidth หรือ MaxHeight ควรถูกตั้งค่าเพื่อหลีกเลี่ยงปัญหา
Carlos Liu

@CarlosLiu เป็นเวลานานฉันไม่ได้ฝึกและจำไม่ได้ แต่ใช่ฟังดูมีเหตุผล ลองสาธิต :)
Kylo Ren

มันเยี่ยมมาก แต่ฉันก็ยังสงสัยว่าทำไมHeight="Auto"และWidth="Auto"ไม่ทำสิ่งเดียวกันให้สำเร็จ ฉันเดาเพราะเนื้อหาของหน้าต่างไม่ได้รับการพิจารณาด้วยการตั้งค่าเหล่านี้
Mike Lowery

7

คำถามเก่า แต่คำตอบที่ปรับปรุงแล้ว:

@ Muad'Dib แนะนำในคำตอบของเขา:

คุณควรตั้ง SizeToContent="WidthAndHeight"คุณควรตั้งค่า

หากขนาดของเนื้อหาของหน้าต่างเพิ่มขึ้นเกินขนาดหน้าจอหน้าต่างสามารถล้นจากหน้าจอ ดังนั้นคุณต้องพิจารณา:

MaxWidth="600"
MaxHeight="400"

และจะทำอย่างไรเมื่อMaxHeight="400"ไม่เคารพ? มันจะเพิ่มขึ้นจนถึงขีด จำกัด หน้าจอ?
andrepaulo

3

คุณไม่สามารถตั้งค่าความสูงของหน้าต่างเป็นอัตโนมัติได้คุณสามารถใช้เคล็ดลับเล็ก ๆ น้อย ๆ ตั้งชื่อคอนเทนเนอร์หลักของตารางหลักตั้งความสูงเป็นอัตโนมัติแล้วผูกความสูงของหน้าต่างกับความสูงของตารางหลัก


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.