如何在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 useRadiusX=“10”RadiusY=“10”
。您是否检查了此否-谢谢。你不知道一个简单的方法,是吗?这似乎有点像黑客。相关帖子,可能是最好的答案。第一个答案很差,有圆角。这个很好用。只需将矩形上的半径X/Y设置为与边框上相同的拐角半径。这应该是首选答案。我更喜欢这个答案,因为它是最干净、最短、最可读(直观)的解决方案……然而!如果将此画笔用作静态资源
或动态资源
,则会出现问题。我假设由于宽度
和高度
绑定失败。第一个答案确实是一个可重用的资源。可怜。我真的很喜欢这个解决方案。