ง่าย (ฉันคิดว่า) เส้นแนวนอนใน WPF?


228

การสร้างแบบฟอร์มการป้อนข้อมูลที่ค่อนข้างง่ายและต้องการแยกส่วนที่แน่นอนด้วยเส้นแนวนอน (ไม่เหมือนกับแท็ก HR ใน HTML) ที่ขยายความยาวทั้งหมดของแบบฟอร์ม

ฉันได้ลองสิ่งนี้แล้ว:

<Line Stretch="Fill" Stroke="Black" X2="1"/>

เนื่องจากตัวควบคุมหลักไม่ใช่ความกว้างคงที่บรรทัดนี้ทำให้หน้าต่างขยายเป็นความกว้างเต็มของหน้าจอ

มีวิธีง่ายๆในการทำเช่นนี้หรือไม่โดยไม่กำหนดความกว้างของตัวควบคุม / หน้าต่างหลัก?


3
คำตอบคือ [ที่นี่] [1] ฉันชอบคำตอบของ mletterle [1]: stackoverflow.com/questions/4011571/…
ซ้อน

คำตอบ:


522

วิธีเพิ่มเกี่ยวกับ xaml ของคุณ:

<Separator/>

9
ทางออกที่ยอดเยี่ยมและหนึ่งแท็ก!

7
ฉันไม่เข้าใจว่านี่เป็นวิธีแก้ปัญหาได้อย่างไร ฉันเพิ่มตัวคั่นและฉันไม่เห็นบรรทัดใด ๆ การกำหนดค่าใดที่จำเป็นเมื่อวางตัวคั่นภายในแผงรูปแบบมาตรฐานเช่นกริดเพื่อให้มันปรากฏขึ้นเหมือนกฎแนวนอน
jpierson

ฉันเห็นด้วยดูเหมือนว่าสิ่งนี้ใช้ไม่ได้กับการควบคุมบางอย่าง
Justin Pihony

12
@jpierson หากคุณเพิ่มลงในตารางคุณอาจต้องกำหนดให้กับแถวและคอลัมน์เช่นเดียวกับตัวควบคุมอื่น ๆ มิฉะนั้นจะปรากฏในแถว / col แรกและคุณจะพลาด (ทำงานได้อย่างถูกต้องบน StackPanel.)
Aneves

5
โปรดทราบว่าตัว<Separator/>อ่านหน้าจอจะอ่านออกเสียงออกมาดัง ๆ หาก<Separator/>ใช้เพื่อแยกกลุ่มรายการใน UI จริง ๆ นี่เป็นโซลูชันที่สมบูรณ์แบบ ในกรณีที่การใช้เส้นมีเหตุผลทางสุนทรียภาพอย่างแท้จริงฉันขอแนะนำให้ใช้<Line/>หรือ<Rectangle/>แทน
Simon Rozman

77

ฉันมีปัญหาเดียวกันและในที่สุดก็เลือกใช้องค์ประกอบสี่เหลี่ยมผืนผ้า:

<Rectangle HorizontalAlignment="Stretch" Fill="Blue" Height="4"/>

ในความคิดของฉันมันค่อนข้างง่ายที่จะปรับเปลี่ยน / รูปร่างกว่าตัวคั่น แน่นอนว่าSeparatorมันเป็นทางออกที่ง่ายและเป็นระเบียบสำหรับการแยกแบบง่าย ๆ :)


2
ใช้งานได้ใน Silverlight 5 ในขณะที่Seperatorไม่มี
ΩmegaMan

14

ใช้เส้นขอบของความสูง 1 และไม่ได้ตั้งค่าความกว้าง (เช่นความกว้าง = อัตโนมัติ, แนวนอนAlignment = ยืด, ค่าเริ่มต้น)


2
มันมีประโยชน์สำหรับตัวคั่นแนวตั้งอยู่แล้ว:<Border Width="1" Margin="2" Background="#8888"/>
Qwertie

8

สำหรับคนอื่นที่ดิ้นรนกับสิ่งนี้: ความคิดเห็นของ Qwertieทำงานได้ดีสำหรับฉัน

<Border Width="1" Margin="2" Background="#8888"/>

สิ่งนี้จะสร้างเครื่องแยกแนวตั้งซึ่งคุณสามารถมีความสามารถเพื่อให้เหมาะกับความต้องการของคุณ


3
To draw Horizontal 
************************    
<Rectangle  HorizontalAlignment="Stretch"  VerticalAlignment="Center" Fill="DarkCyan" Height="4"/>

To draw vertical 
*******************
 <Rectangle  HorizontalAlignment="Stretch" VerticalAlignment="Center" Fill="DarkCyan" Height="4" Width="Auto" >
        <Rectangle.RenderTransform>
            <TransformGroup>
                <ScaleTransform/>
                <SkewTransform/>
                <RotateTransform Angle="90"/>
                <TranslateTransform/>
            </TransformGroup>
        </Rectangle.RenderTransform>
    </Rectangle>
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.