Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在WPF中实现虚线或虚线边框?_Wpf_Styles_Border_Listviewitem - Fatal编程技术网

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

如何在WPF中实现虚线或虚线边框?,wpf,styles,border,listviewitem,Wpf,Styles,Border,Listviewitem,我有一个应用了样式的ListViewItem,我想在底部边框上画一条灰色虚线 我怎样才能在WPF中做到这一点?我只能看到纯色画笔。您可以使用矩形创建虚线或虚线,如下面的代码所示 <Rectangle Stroke="#FF000000" Height="1" StrokeThickness="1" StrokeDashArray="4 4" SnapsToDevicePixels=

我有一个应用了
样式的
ListViewItem
,我想在底部
边框上画一条灰色虚线


我怎样才能在WPF中做到这一点?我只能看到纯色画笔。

您可以使用矩形创建虚线或虚线,如下面的代码所示

<Rectangle Stroke="#FF000000" Height="1" StrokeThickness="1" StrokeDashArray="4 4"
                                                       SnapsToDevicePixels="True"/>


从这里开始,并根据您的场景定制您的listview这在我们的应用程序中非常有效,使我们能够使用真实的边框,而不会弄乱矩形:

<Border BorderThickness="1,0,1,1">
   <Border.BorderBrush>
      <DrawingBrush Viewport="0,0,8,8" ViewportUnits="Absolute" TileMode="Tile">
         <DrawingBrush.Drawing>
            <DrawingGroup>
               <GeometryDrawing Brush="Black">
                  <GeometryDrawing.Geometry>
                     <GeometryGroup>
                        <RectangleGeometry Rect="0,0,50,50" />
                        <RectangleGeometry Rect="50,50,50,50" />
                     </GeometryGroup>
                  </GeometryDrawing.Geometry>
               </GeometryDrawing>
            </DrawingGroup>
         </DrawingBrush.Drawing>
      </DrawingBrush>
   </Border.BorderBrush>

   <TextBlock Text="Content Goes Here!" Margin="5"/>
</Border>


请注意,视口确定线条中虚线的大小。在这种情况下,它会生成八个像素的破折号。Viewport=“0,0,4,4”将为您提供四个像素的破折号。

派对有点晚,但以下解决方案对我有效。它比其他两种解决方案稍微简单/更好:

<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



如何在需要相同样式的其他元素上使用该样式。您可以定义一个包含DrawingBrush的样式,然后将该样式应用于所需的任何元素。这两个矩形实际上是以这样一种方式对齐的,即此图案在边框周围、水平和垂直、左右都可以使用。(最好不要尝试将其用于非矩形线…)这样做破折号偏移仍然可以设置动画吗?未经批准的最佳解决方案。:)有任何方法可以使用圆角进行设置吗?@Jordan use
RadiusX=“10”RadiusY=“10”
。您是否检查了此否-谢谢。你不知道一个简单的方法,是吗?这似乎有点像黑客。相关帖子,可能是最好的答案。第一个答案很差,有圆角。这个很好用。只需将矩形上的半径X/Y设置为与边框上相同的拐角半径。这应该是首选答案。我更喜欢这个答案,因为它是最干净、最短、最可读(直观)的解决方案……然而!如果将此画笔用作
静态资源
动态资源
,则会出现问题。我假设由于
宽度
高度
绑定失败。第一个答案确实是一个可重用的资源。可怜。我真的很喜欢这个解决方案。