如何用句点填充文本块(Silverlight 5)

时间:2013-05-16 11:45:38

标签: silverlight textblock fill period drawingbrush

我有一个网格和三列。这是代码:

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

因此,如果我的网格具有固定大小,那么此解决方案就可以了,但如果它动态变化,那么我不知道如何动态更改周期。
我已阅读this帖子,但 Bob Bao 提供的解决方案在Silverlight中无效(我的意思是DrawingBrush个对象不支持)。
我还阅读了this帖子,其中 Tamir Khason 提供克隆WPF对象以在Silverlight中使用它。我不想使用这种复杂的解决方案 有没有人有更好的解决方案?

1 个答案:

答案 0 :(得分:0)

您可以使用路径并使用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元素)...更改StartPointHeight以获取其他点大小...

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