WPF中的简单(我认为)水平线?


228

创建一个相对简单的数据输入表单,只想用一条水平线(与HTML中的HR标签不同)分隔某些部分,该水平线会拉伸整个表单。

我已经试过了:

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

由于父控件的宽度不是固定的,因此该行会导致窗口拉伸到屏幕的整个宽度。

是否有一种简单的方法可以执行此操作而不固定我的父控件/窗口的宽度?


3
答案是[这里] [1]。我更喜欢mletterle的答案。[1]:stackoverflow.com/questions/4011571/…–
堆叠

Answers:


522

如何将此添加到您的xaml:

<Separator/>

9
出色的解决方案和一个标签!

7
我不明白这是一个解决方案。我添加了分隔符,但没有看到任何行。将分隔符放在标准布局面板(例如网格)中以使其像水平线一样显示时,需要什么配置?
jpierson

我同意,看来这不适用于某些控件
Justin Pihony

12
@jpierson如果将其添加到网格中,则可能需要像其他控件一样将其分配给行和列。否则,它可能会出现在第一行/列中,并且您会错过它。(它在StackPanel上正常工作。)
ANeves 2013年

5
请注意,<Separator/>屏幕阅读器会大声读出。如果<Separator/>用于在UI中实际分隔项目组,那么这是一个完美的解决方案。如果使用线条纯粹出于美学原因,我建议您使用<Line/><Rectangle/>代替。
西蒙·罗兹曼

77

我遇到了同样的问题,最终选择使用Rectangle元素:

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

在我看来,修改/成形比分隔符要容易一些。当然,Separator对于简单的分离而言,这是一个非常简单易用的解决方案:)


2
可在Silverlight 5中使用,而Seperator不能。
ΩmegaMan

14

使用高度为1的边框,并且不设置宽度(即,宽度=自动,水平对齐=拉伸,默认设置)


2
无论如何,它对于垂直分隔符<Border Width="1" Margin="2" Background="#8888"/>
都很

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>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.