我有一个ListViewItem
正在应用的Style
,我想在底部画一条灰色虚线Border
。
如何在WPF中执行此操作?我只能看到纯色画笔。
我有一个ListViewItem
正在应用的Style
,我想在底部画一条灰色虚线Border
。
如何在WPF中执行此操作?我只能看到纯色画笔。
Answers:
这在我们的应用程序中效果很好,允许我们使用真实的Border而不用与Rectangles混在一起:
<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”将为您提供四像素虚线。
您可以使用矩形来创建点划线或虚线,如下面的代码所示
<Rectangle Stroke="#FF000000" Height="1" StrokeThickness="1" StrokeDashArray="4 4"
SnapsToDevicePixels="True"/>
从此开始并根据情况自定义列表视图
RadiusX="10" RadiusY="10"
。
开派对有点晚,但是以下解决方案对我有用。它比其他两种解决方案都更简单/更好:
<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>
staticresource
或dynamicresource
,则出现问题。我假设由于Width
和Height
绑定失败。第一个答案确实是可重用的资源。可怜。我真的很喜欢这个解决方案。
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>