Quero adicionar um separador vertical a uma grade, mas só consigo encontrar o horizontal. Não existe uma propriedade, onde você pode inserir se a linha do separador deve ser horizontal ou vertical?
Pesquisei muito, mas não encontrei uma solução curta e fácil para isso.
Eu uso .Net Framework 4.0 e Visual Studio Ultimate 2012.
Se eu tentar girar o Separador horizontal em 90 graus, ele perde a capacidade de "encaixar" em outros componentes.
O separador girado tem a seguinte aparência:
<Separator HorizontalAlignment="Left" Height="100" Margin="264,26,0,0" VerticalAlignment="Top" Width="100" RenderTransformOrigin="0.5,0.5">
<Separator.RenderTransform>
<TransformGroup>
<ScaleTransform/>
<SkewTransform/>
<RotateTransform Angle="90"/>
<TranslateTransform/>
</TransformGroup>
</Separator.RenderTransform>
</Separator>
wpf
xaml
visual-studio-2012
separator
Martin Weber
fonte
fonte
Rectangle
?Border
também pode ser uma solução ..Respostas:
Isso deve fazer exatamente o que o autor queria:
se desejar um separador horizontal, altere o
Orientation
deStackPanel
paraVertical
.fonte
RenderTransform
. Atalho legal para lembrar :)Menu
entreMenuItem
s também. Sempre bem alongado para corresponder à altura / largura do menu.Não foi exatamente isso que o autor perguntou, mas ainda assim, é muito simples e funciona exatamente como o esperado.
O retângulo faz o trabalho:
fonte
<Rectangle HorizontalAlignment="Stretch" Height="3" Margin="-1,6" Stroke="Black" Fill="White" />
No passado, usei o estilo encontrado aqui
Você precisa definir a transformação em, em
LayoutTransform
vez deRenderTransform
para que a transformação ocorra durante a passagem de Layout, não durante a passagem de Renderização. A passagem de Layout ocorre quando o WPF está tentando fazer o layout de controles e descobrir quanto espaço cada controle ocupa, enquanto a passagem de Renderização ocorre após a passagem de layout quando o WPF está tentando renderizar os controles.Você pode ler mais sobre a diferença entre
LayoutTransform
eRenderTransform
aqui ou aquifonte
DockPanel
, você deve ser capaz de colocá-loDockPanel.Dock
noSeparator
lado em que deseja encaixá-lo. Com o WPF, o painel que hospeda o controle geralmente determina a posição do controle e às vezes até o tamanho padrão. Se você é novo nos layouts do WPF, recomendo a leitura deste artigo: Layouts do WPF - Um Visual Quick StartGosto de usar o controle "Linha". Dá a você controle exato sobre onde o separador começa e termina. Embora não seja exatamente um separador, ele funciona da mesma maneira, especialmente em um StackPanel.
O controle de linha também funciona dentro de uma grade. Eu prefiro usar o StackPanel porque você não precisa se preocupar com a sobreposição de diferentes controles.
X1 = x posição inicial (deve ser 0 para uma linha vertical)
X2 = x posição final (X1 = X2 para uma linha vertical)
Y1 = posição inicial y (deve ser 0 para uma linha vertical)
Y2 = posição final de y (Y2 = altura de linha desejada)
Eu uso "margem" para adicionar preenchimento em qualquer lado da linha vertical. Neste caso, existem 5 pixels à esquerda e 10 pixels à direita da linha vertical.
Como o controle de linha permite que você escolha as coordenadas xey do início e do final da linha, você também pode usá-lo para linhas horizontais e linhas em qualquer ângulo entre elas.
fonte
Esta é uma maneira muito simples de fazer isso, sem funcionalidade e todos os efeitos visuais,
Use uma grade e simplesmente personalize-a.
Apenas outra maneira de fazer isso.
fonte
<Grid HorizontalAlignment="Stretch" Height="1" Margin="0,10" Background="Black"/>
Separador vertical
separador horizontal
fonte
De http://social.msdn.microsoft.com/Forums/vstudio/en-US/12ead5d4-1d57-4dbb-ba81-bc13084ba370/how-can-i-add-a-line-as-a-visual-separator -para-the-content-control-like-grid? forum = wpf :
Experimente este exemplo e veja se ele atende às suas necessidades, existem três aspectos principais para ele.
Line.Stretch está definido para preencher.
Para linhas horizontais, o VerticalAlignment da linha é definido como Bottom e, para VerticalLines, o HorizontalAlignment é definido como Right.
Em seguida, precisamos dizer à linha quantas linhas ou colunas devem ser estendidas; isso é feito vinculando-se à propriedade de contagem RowDefinitions ou ColumnDefintions.
fonte
usar
fonte
Aqui está como eu fiz:
fonte