如何在WPF中实现虚线或虚线边框?

问题描述

| 我有一个ѭ0,我要向其应用and1,我想在虚线the 2的底部放一条虚线。 我如何在WPF中做到这一点?我只能看到纯色画笔。     

解决方法

        这在我们的应用程序中效果很好,允许我们使用真实的Border而不用与Rectangles混在一起:
<Border BorderThickness=\"1,1,1\">
   <Border.BorderBrush>
      <DrawingBrush Viewport=\"0,8,8\" ViewportUnits=\"Absolute\" TileMode=\"Tile\">
         <DrawingBrush.Drawing>
            <DrawingGroup>
               <GeometryDrawing Brush=\"Black\">
                  <GeometryDrawing.Geometry>
                     <GeometryGroup>
                        <RectangleGeometry Rect=\"0,50,50\" />
                        <RectangleGeometry Rect=\"50,50\" />
                     </GeometryGroup>
                  </GeometryDrawing.Geometry>
               </GeometryDrawing>
            </DrawingGroup>
         </DrawingBrush.Drawing>
      </DrawingBrush>
   </Border.BorderBrush>

   <TextBlock Text=\"Content Goes Here!\" Margin=\"5\"/>
</Border>
请注意,视口将确定行中破折号的大小。在这种情况下,它将生成八个像素的虚线。视口= \“ 0,4,4 \”将为您提供四个像素的虚线。     ,        您可以使用矩形来创建点划线或虚线,如下面的代码所示
<Rectangle Stroke=\"#FF000000\" Height=\"1\" StrokeThickness=\"1\" StrokeDashArray=\"4 4\"
                                                       SnapsToDevicePixels=\"True\"/>
开始使用,并根据情况自定义列表视图     ,        参加聚会有点晚,但是以下解决方案对我有用。它比其他两种解决方案都更简单/更好:
<Border BorderThickness=\"1\">
  <Border.BorderBrush>
    <VisualBrush>
      <VisualBrush.Visual>
        <Rectangle StrokeDashArray=\"4 2\" Stroke=\"Gray\" StrokeThickness=\"1\"
                  Width=\"{Binding RelativeSource={RelativeSource AncestorType={x:Type Border}},Path=ActualWidth}\"
                  Height=\"{Binding RelativeSource={RelativeSource AncestorType={x:Type Border}},Path=ActualHeight}\"/>
      </VisualBrush.Visual>
    </VisualBrush>
  </Border.BorderBrush>

  <TextBlock Text=\"Whatever\" />
</Border>
    ,        Xaml
<Grid>
<Grid.RowDefinitions><RowDefinition Height=\"auto\"/></Grid.RowDefinitions>
<Grid.ColumnDefinitions><ColumnDefinition Width=\"auto\"/></Grid.ColumnDefinitions>
<Rectangle RadiusX=\"9\" RadiusY=\"9\" Fill=\"White\" Stroke=\"Black\" StrokeDashArray=\"1,2\"/>
<TextBlock Padding = \"4,2\" Text=\"Whatever\"/>
</Grid>