2010-03-12 6 views
6

¿Es posible crear una línea en XAML (sin ningún código C# detrás) para alinear una línea dentro de un contenedor de diseño como una cuadrícula?En XAML puro, ¿es posible obtener una línea para alinearla a una parte de una cuadrícula?

me gustaría tener eficacia:

<Grid> 
    <Line StrokeThickness="1" 
      HorizontalAlignment="Stretch" 
      VerticalAlignment="Bottom" 
      Stroke="Red"/> 
</Grid> 

Tengo que utilizar StrokeDashArray y StrokeDashOffset, de lo contrario habría sólo tiene que utilizar un control Border con el BorderThickness establecido en "0,0,0,1" ...

Gracias por ¡algunas ideas!

Respuesta

10

Para más detalles sobre la respuesta de kanchirk, esto funciona para mí:

<Path StrokeThickness="1" 
HorizontalAlignment="Stretch" 
VerticalAlignment="Bottom" 
Data="M0,0 L1,0" 
Stretch="Fill" 
StrokeEndLineCap="Square" 
StrokeStartLineCap="Square" 
Stroke="Red"/> 

También puede lo mismo con un Line:

<Line StrokeThickness="1" 
HorizontalAlignment="Stretch" 
VerticalAlignment="Bottom" 
X2="1" 
Stretch="Fill" 
StrokeEndLineCap="Square" 
StrokeStartLineCap="Square" 
Stroke="Red"/> 
+1

Gracias - es bastante bueno, y responde mi pregunta tal como está formulada. Marcado como respondido. Sin embargo, realmente quiero usar esto para imitar el subrayado de lujo para un bloque de texto, por lo que no quiero que se estire más de lo necesario para llenar el contenedor. –

+0

¿Estás diciendo que será más ancho que su contenedor? Quizás debas crear una pregunta más específica (y vincularla desde aquí) si esto no funciona para ti. – Gabe

+0

@Gabe El problema es que 'Stretch = Fill' hace que sea más difícil, si no imposible, utilizar' StrokeDashArray' y propiedades relacionadas para crear una línea punteada/discontinua, ya que "estirará" en lugar de "mosaico" los puntos/guiones. – Livven

1

creo que es necesario utilizar Ruta como esto

<Grid x:Name="LayoutRoot" Background="White"> 

<Path Fill="Red" Stretch="Fill" Stroke="Black" StrokeDashArray="1" Height="4" Margin="8,0,7,7" VerticalAlignment="Bottom" UseLayoutRounding="False" Data="M8,127 L457,127" StrokeThickness="13"/> 

</Grid> 

espero que esto ayude. Expression Blend es imprescindible para este tipo de desafíos o incluso VS 2010 RC1 (por ahora)

1

¿Qué tal esto?

<Line x:Name="line" 
StrokeThickness="1" 
HorizontalAlignment="Stretch" 
VerticalAlignment="Bottom" 
Stroke="Red" 
X2="{Binding ActualWidth, ElementName=line, Mode=OneWay}" 
Stretch="Fill" 
StrokeStartLineCap="Square" 
StrokeEndLineCap="Square"/> 
+0

La unión es interesante, gracias. Por razones de rendimiento, aunque estoy cansado de usarlo. –

+0

Este código no funciona para mí. – Gabe

+0

@gabe, tienes razón. Extrañaba Stretch, StrokeStartLineCap y StrokeEndLineCap. Ahora estará bien. De todos modos, tu solución es mejor para todos. : D – Gongdo

Cuestiones relacionadas