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?


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

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


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)


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.


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>
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.