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.