2010-03-12 11 views
6

E 'possibile creare una linea in XAML (senza codice C# dietro) per allineare una linea all'interno di un contenitore di layout come una griglia?In XAML puro, è possibile ottenere una linea per l'allineamento a una parte di una griglia?

Mi piacerebbe avere in modo efficace:

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

Ho bisogno di usare StrokeDashArray e StrokeDashOffset, altrimenti avrei semplicemente utilizzare un controllo Border con il BorderThickness impostato "0,0,0,1" ...

Grazie per qualche idea!

risposta

10

Per approfondire la risposta di kanchirk, questo funziona per me:

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

È possibile anche la stessa cosa con un Line:

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

Grazie - è abbastanza buono, e risponde alla mia domanda come formulato. Marcatura come risposta. Tuttavia, voglio davvero usarlo per simulare la sottolineatura di fantasia per un blocco di testo, quindi non voglio che si allunghi più del necessario per riempire il contenitore. –

+0

Stai dicendo che diventerà più largo del suo contenitore? Forse dovresti creare una domanda più specifica (e collegarti ad essa da qui) se questo non funzionerà in realtà per te. – Gabe

+0

@Gabe Il problema è che 'Stretch = Fill' rende più difficile, se non impossibile, usare' StrokeDashArray' e le proprietà correlate per creare una linea tratteggiata/tratteggiata, poiché "stirerà" invece di "affiancare" i punti/trattini. – Livven

1

penso che è necessario utilizzare Path come questo

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

Spero che questo aiuti. Expression Blend è un must per questo tipo di sfide o anche per VS 2010 RC1 (per ora)

1

Che ne dici di questo?

<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

legame è interessante, grazie. Per motivi di prestazioni, anche se sono stanco di usarlo. –

+0

Questo codice non funziona per me. – Gabe

+0

@gabe, hai ragione. Mi mancavano Stretch, StrokeStartLineCap e StrokeEndLineCap. Ora andrà bene. Ad ogni modo, la tua soluzione è migliore per tutti. : D – Gongdo

Problemi correlati