Simples (acho) Linha Horizontal no WPF?

228

Criando um formulário de entrada de dados relativamente simples e apenas deseja separar determinadas seções com uma linha horizontal (não muito diferente de uma tag HR em HTML) que estende todo o comprimento do formulário.

Eu tentei isso:

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

Como o controle pai não é uma largura fixa, essa linha faz com que a janela se estenda até a largura total da tela.

Existe uma maneira fácil de fazer isso sem corrigir a largura do meu controle / janela pai?

Phil Sandler
fonte
3
A resposta é [aqui] [1]. Eu prefiro a resposta de mletterle. [1]: stackoverflow.com/questions/4011571/…
Empilhado

Respostas:

522

Que tal adicionar isso ao seu xaml:

<Separator/>
Adel Hazzah
fonte
9
solução brilhante e uma etiqueta!
7
Eu não entendo como isso é uma solução. Eu adiciono um separador e não vejo nenhuma linha. Que configuração é necessária ao colocar o separador dentro de um painel de layout padrão, como um Grid, para que ele apareça como uma regra horizontal?
jpierson
Concordo, parece que isso não funciona para alguns controles
Justin Pihony
12
@jpierson Se você adicioná-lo a uma grade, provavelmente precisará atribuí-lo a uma linha e coluna como qualquer outro controle. Caso contrário, provavelmente aparecerá na primeira linha / coluna e você sentirá falta. (Ele funciona corretamente em um StackPanel.)
ANeves
5
Observe que <Separator/>será lido em voz alta pelos leitores de tela. Se <Separator/>for usado para realmente separar grupos de itens na interface do usuário, esta é uma solução perfeita. Onde o uso da linha tiver razões puramente estéticas, sugiro usar <Line/>ou <Rectangle/>não.
Simon Rozman
77

Eu tive o mesmo problema e, finalmente, optei por usar um elemento Rectangle:

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

Na minha opinião, é um pouco mais fácil modificar / moldar do que um separador. Claro que Separatoré uma solução muito fácil e organizada para separações simples :)

Deruijter
fonte
2
Funciona no Silverlight 5, enquanto Seperatornão.
ManmegaMan 29/09/2014
14

Use uma borda de altura 1 e não defina a largura (ou seja, Largura = Auto, HorizontalAlignment = Stretch, o padrão)

Ana Betts
fonte
2
É útil para separadores verticais de qualquer maneira:<Border Width="1" Margin="2" Background="#8888"/>
Qwertie
8

Para qualquer outra pessoa que esteja lutando com isso: o comentário de Qwertie funcionou bem para mim.

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

Isso cria um separador vertical que você pode atender às suas necessidades.

P_Fitz
fonte
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>
shaiju mathew
fonte