2010-03-12 15 views
6

是否可以在XAML中創建一個Line(沒有任何C#代碼)來對齊佈局容器(如Grid)中的一條線?在純XAML中,是否可以讓一條線對齊到網格的一部分?

我想有效地有:

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

我需要使用StrokeDashArrayStrokeDashOffset,否則,我只想用一個Border控制設置爲"0,0,0,1"的了borderThickness ...

感謝有任何想法嗎!

回答

10

爲了詳細說明kanchirk的迴應,這個工作對我來說:

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

你也可以用Line同樣的事情:

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

謝謝 - 這很不錯,並且按照措辭回答我的問題。標記爲已回答。 但是,我真的很想用它來模仿文本塊的花式下劃線,所以我不希望它拉伸比填充容器更大。 – 2010-03-12 05:50:23

+0

你是說它會比它的容器更寬嗎?也許你應該創建一個更具體的問題(並從這裏鏈接到它),如果這實際上不適合你。 – Gabe 2010-03-12 05:56:59

+0

@Gabe問題是'Stretch = Fill'使得使用'StrokeDashArray'和相關的屬性來創建虛線/虛線是困難的,因爲它將「伸展」而不是「瓦」點/破折號。 – Livven 2014-10-04 13:22:13

1

我認爲你需要使用路徑這樣

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

希望這有助於。 Expression Blend是這類挑戰的必備品,甚至VS 2010 RC1(現在)

1

這個怎麼樣?

<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

綁定有趣的是,謝謝。出於性能原因,儘管我很疲倦地使用它。 – 2010-03-12 05:45:31

+0

此代碼不適用於我。 – Gabe 2010-03-12 05:50:32

+0

@gabe,你說得對。我錯過了Stretch,StrokeStartLineCap和StrokeEndLineCap。現在它會沒事的。無論如何,您的解決方案對所有人都更好。 :D – Gongdo 2010-03-12 06:25:16

相關問題