ความสูงอัตโนมัติ WPF ในรหัส


104

ฉันจะตั้งค่าHeightคุณสมบัติของตัวควบคุม WPF ในรหัส C # เป็น " Auto" ได้อย่างไร

<Grid.RowDefinitions>
    <RowDefinition />
    <RowDefinition Height="Auto" />
    <RowDefinition />
    <RowDefinition Height="Auto" />
    <RowDefinition />
    <RowDefinition Height="Auto" />
    <RowDefinition />
    <RowDefinition Height="Auto" />
    <RowDefinition />
</Grid.RowDefinitions>

ฉันต้องการสร้างพฤติกรรมนี้ซ้ำในโค้ดด้านหลัง ความคิดใด ๆ ?

คำตอบ:


148

บางทีลิงค์นี้จะช่วยคุณได้

ในบางครั้งคุณอาจต้องการตั้งค่าความสูงหรือความกว้างขององค์ประกอบ WPF เป็นรหัสอัตโนมัติ ในการดำเนินการนี้ให้ใช้ค่า Double.NaN (ไม่ใช่ตัวเลข)

ตัวอย่างเช่นใน C #:

this.txtName.Width = Double.NaN;


1
อย่าทำงานในกรณีของฉัน แต่ฉันกำลังเปลี่ยนความกว้างของความสูงผ่านพฤติกรรม (การแสดงออกผสมผสาน 4.0 lib)
Franck

1
ลิงก์เสียแล้ว แต่คุณสามารถเข้าถึงเวอร์ชันที่เก็บถาวรได้ที่นี่
akjoshi

2
คำตอบของ Nimrod นั้นชัดเจนและเข้าใจง่ายกว่ามาก
เดวิด

การรับ 'NaN' ไม่ใช่ค่าที่ถูกต้องสำหรับคุณสมบัติ 'MaxWidth'
Damitha

1
ฉันรู้สึกว่าคำตอบของ Nimrod นั้นสะอาดที่สุดและตอนนี้ควรเป็นคำตอบที่ยอมรับแล้ว (ไม่แน่ใจว่าGridLength.Autoเป็นไปได้ในอดีต) นอกจากนี้ยังGridLength.Starเติมเต็มพื้นที่ที่เหลือ
Wolfgang Schreurs

112

คุณสามารถใช้ได้

RowDefinition rd = RowDefinition ใหม่ ();  
rd HEight = GridLength.Auto;  
ContentGrid.RowDefinitions.Add (rd);

8
ความแตกต่างระหว่างคำตอบนี้กับคำตอบที่ยอมรับหรือไม่? เพราะถ้าไม่นี่ควรเป็นคำตอบอันดับต้น ๆ สำหรับการไม่หลีกเลี่ยงกรอบ
estebro

3
ตามตัวสะท้อนแสง GridLength.Auto คือ GridLength ใหม่ (1.0, GridUnitType.Auto); ดังนั้นจึงไม่เทียบเท่ากับคำตอบที่ยอมรับ แต่อ่านได้ง่ายกว่ามาก
helios456

นี่ไม่ใช่วิธีแก้ปัญหาทั่วไปเหมือนกับคำตอบที่ยอมรับ การควบคุมบางอย่างไม่ได้ใช้คุณสมบัติความสูงเป็นวัตถุ 'GridLength' (โครงสร้าง) สำหรับผู้ที่ใช้เพียงสองครั้งคำตอบนี้ไม่ได้ผล และคำถามทั่วไปไม่ได้ถาม แต่ใช้กริดเป็นตัวอย่างเท่านั้น
UuDdLrLrSs
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.