2010-03-12 7 views
6

Có thể tạo một Dòng trong XAML (không có bất kỳ mã C# nào phía sau) để căn chỉnh một đường thẳng bên trong một vùng chứa bố cục như Lưới không?Trong XAML thuần túy, có thể lấy Line để căn chỉnh với một phần của Grid không?

Tôi muốn có hiệu quả phải:

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

tôi cần phải sử dụng StrokeDashArrayStrokeDashOffset, nếu không tôi sẽ chỉ sử dụng một điều khiển Border với BorderThickness thiết lập để "0,0,0,1" ...

Cám ơn bất kỳ ý tưởng nào!

Trả lời

10

Để xây dựng ứng phó kanchirk, điều này làm việc cho tôi:

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

Bạn cũng có thể điều tương tự với một Line:

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

Cảm ơn - nó khá tốt, và trả lời câu hỏi của tôi như là phrased. Đánh dấu là đã trả lời. Tuy nhiên, tôi thực sự muốn sử dụng điều này để bắt chước gạch chân ưa thích cho một khối văn bản, vì vậy tôi không muốn nó kéo dài lớn hơn cần phải điền vào vùng chứa. –

+0

Bạn đang nói nó sẽ trở nên rộng hơn container của nó? Có lẽ bạn nên tạo một câu hỏi cụ thể hơn (và liên kết với nó từ đây) nếu điều này sẽ không thực sự làm việc cho bạn. – Gabe

+0

@Gabe Vấn đề là 'Stretch = Fill' làm cho khó hơn nếu không thể sử dụng' StrokeDashArray' và các thuộc tính liên quan để tạo một đường chấm chấm/đứt nét, vì nó sẽ "giãn" thay vì "gạch" các dấu chấm/dấu gạch ngang. – Livven

1

Tôi nghĩ rằng bạn cần phải sử dụng Đường dẫn như

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

Hy vọng điều này này Giúp. Expression Blend là một phải có cho loại thách thức hoặc thậm chí VS 2010 RC1 (Để bây giờ)

1

Làm thế nào về điều này?

<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

Ràng buộc là thú vị, cảm ơn. Vì lý do hiệu suất mặc dù tôi mệt mỏi khi sử dụng nó. –

+0

Mã này không hoạt động đối với tôi. – Gabe

+0

@gabe, bạn nói đúng. Tôi đã bỏ lỡ Stretch, StrokeStartLineCap và StrokeEndLineCap. Bây giờ nó sẽ ổn thôi. Dù sao, giải pháp của bạn là tốt hơn cho tất cả. : D – Gongdo