如何在Silverlight中的Border元素上创建虚线边框?

Edw*_*uay 7 .net c# silverlight border dotted-line

如何使这个Border Silverlight元素的底部边框在红色线内部有一个红色

Border border = new Border();
border.CornerRadius = new CornerRadius(5);
border.BorderThickness = new Thickness(0, 0, 0, 1);
border.BorderBrush = new SolidColorBrush(Colors.Red);
Run Code Online (Sandbox Code Playgroud)

Ste*_*han 12

你可以用网格替换边框并给它一个填充整个区域的矩形吗?

<Rectangle Stretch="Fill" RadiusX="10" RadiusY="10" StrokeDashArray="10, 2" Stroke="Black" Fill="White" />
Run Code Online (Sandbox Code Playgroud)

StrokeDashArray可用于绘制虚线,但Border没有这样的属性.

编辑:

因为我注意到你只是点击底部边框,你可以做这样的事情

<Border Width="100" Height="100" Background="Blue" BorderThickness="0,0,0,1">
    <Border.BorderBrush>
        <LinearGradientBrush StartPoint="0,0" EndPoint=".2,0" SpreadMethod="Repeat" >
            <GradientStopCollection>
                <GradientStop Color="Transparent" Offset="0" />
                <GradientStop Color="Transparent" Offset="0.3" />
                <GradientStop Color="Red" Offset="0.3" />
                <GradientStop Color="Red" Offset="0.6" />
                <GradientStop Color="Transparent" Offset="0.6" />
                <GradientStop Color="Transparent" Offset="1" />
            </GradientStopCollection>
        </LinearGradientBrush>
    </Border.BorderBrush>
</Border>
Run Code Online (Sandbox Code Playgroud)

调整Offset中间两个GradientStop以调整红点/短划线的宽度.您可能还需要调整端点,使其按所需间隔重复.

  • 如果你不希望沿着线的破折号在调整大小时移动,你应该在`LinearGradientBrush`上设置`MappingMode ="Absolute".您可能还需要在进行更改后调整其他一些参数. (2认同)

Dre*_*kes 6

斯蒂芬的回答很有帮助.但是,如果您想要一个简单的虚线,在调整大小时不会延伸,请尝试以下XAML:

<!-- Horizontal dotted line -->
<Border HorizontalAlignment="Stretch" Height="1" BorderThickness="0,0,0,1">
  <Border.BorderBrush>
    <LinearGradientBrush StartPoint="0,0" EndPoint="2,0"
                         SpreadMethod="Repeat" MappingMode="Absolute">
        <GradientStop Color="Transparent" Offset="0" />
        <GradientStop Color="Transparent" Offset="0.499" />
        <GradientStop Color="#999" Offset="0.5" />
    </LinearGradientBrush>
  </Border.BorderBrush>                              
</Border>
Run Code Online (Sandbox Code Playgroud)

这是垂直虚线的替代方案:

<!-- Vertical dotted line -->
<Border VerticalAlignment="Stretch" Width="1" BorderThickness="0,0,1,0">
  <Border.BorderBrush>
    <LinearGradientBrush StartPoint="0,0" EndPoint="0,2"
                         SpreadMethod="Repeat" MappingMode="Absolute">
        <GradientStop Color="Transparent" Offset="0" />
        <GradientStop Color="Transparent" Offset="0.499" />
        <GradientStop Color="#999" Offset="0.5" />
    </LinearGradientBrush>
  </Border.BorderBrush>                              
</Border>
Run Code Online (Sandbox Code Playgroud)

巧合的是,如果你在一个不是1px宽/高的区域使用这个刷子,那么你会得到一个漂亮的细条纹图案.