Ich habe eine ListViewItem
, auf die ich eine anwende Style
, und ich möchte eine gepunktete graue Linie als untere setzen Border
.
Wie kann ich das in WPF machen? Ich kann nur einfarbige Pinsel sehen.
Ich habe eine ListViewItem
, auf die ich eine anwende Style
, und ich möchte eine gepunktete graue Linie als untere setzen Border
.
Wie kann ich das in WPF machen? Ich kann nur einfarbige Pinsel sehen.
Antworten:
Dies hat in unserer Anwendung hervorragend funktioniert, sodass wir einen echten Rand verwenden und nicht mit Rechtecken herumspielen können:
<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>
Beachten Sie, dass das Ansichtsfenster die Größe der Striche in den Zeilen bestimmt. In diesem Fall werden Striche mit acht Pixeln generiert. Viewport = "0,0,4,4" würde Ihnen Striche mit vier Pixeln geben.
quelle
Sie können eine gepunktete Linie oder eine Strichlinie mit einem Rechteck wie im folgenden Code erstellen
<Rectangle Stroke="#FF000000" Height="1" StrokeThickness="1" StrokeDashArray="4 4" SnapsToDevicePixels="True"/>
Beginnen Sie damit und passen Sie Ihre Listenansicht an Ihr Szenario an
quelle
RadiusX="10" RadiusY="10"
.Ein bisschen spät zur Party, aber die folgende Lösung hat bei mir funktioniert. Es ist etwas einfacher / besser als beide anderen Lösungen:
<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>
quelle
staticresource
oder verwendendynamicresource
, geht etwas schief. Ich gehe davon aus, dass dieWidth
undHeight
Bindungen versagen. Die erste Antwort funktioniert als wiederverwendbare Ressource. Das Mitleid. Diese Lösung gefällt mir sehr gut.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>
quelle