我有一个网格和三列。下面是代码:
<Grid x:Name="StaticGrid"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Width="450"
Margin="3">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBlock Text="{TemplateBinding Description}"
Grid.Column="0"
Height="30"
HorizontalAlignment="Left"/>
<TextBlock Text="......................................................................................................"
Grid.Column="1"/>
<TextBlock Text="{TemplateBinding ParamValue}"
Grid.Column="2"
Height="30"
HorizontalAlignment="Right"/>
</Grid>
如果我的网格有一个固定的大小,那么这个解决方案是可以的,但如果它是动态变化的,那么我不知道如何动态地改变周期。
我读过这篇文章,但是由Bob Bao给出的解决方案在Silverlight
中不工作(我的意思是DrawingBrush
对象不受支持)。我也读过这篇文章,其中Tamir Khason提供克隆WPF
对象以在Silverlight
中使用它。我不想用这么复杂的解。
有人有更好的解决方案吗?
你可以像这样使用一个路径和StrokeDashArray属性:
<Grid Height="100" Width="100">
<Path Data="M5,1 L1,1"
Height="1"
Stretch="UniformToFill"
Stroke="Black"
StrokeThickness="2"
VerticalAlignment="Top"
StrokeDashArray="1 1"/>
</Grid>
编辑:通过使用LinearGradientBrush属性和矩形(或其他ui元素)的高度…更改StartPoint
和Height
为另一个点大小…
<Grid Height="100" Width="100">
<Rectangle Height="2">
<Rectangle.Fill>
<LinearGradientBrush
EndPoint="0,0"
StartPoint="3,0"
MappingMode="Absolute"
SpreadMethod="Repeat">
<GradientStop Color="Black" Offset="0.5"/>
<GradientStop Offset="0.5"/>
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
</Grid>