web-dev-qa-db-fra.com

Comment puis-je obtenir une bordure en pointillés ou en pointillés dans WPF?

J'ai un ListViewItem sur lequel j'applique un Style et j'aimerais mettre une ligne grise pointillée en bas Border.

Comment puis-je faire cela dans WPF? Je ne peux voir que des pinceaux de couleur unie.

65
dan

Cela a très bien fonctionné dans notre application, nous permettant d'utiliser une vraie bordure et de ne pas jouer avec les 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>

Notez que la fenêtre détermine la taille des tirets dans les lignes. Dans ce cas, il génère des tirets de huit pixels. Viewport = "0,0,4,4" vous donnerait des tirets de quatre pixels.

105
Rand Scullard

Vous pouvez créer une ligne pointillée ou tirets en utilisant un rectangle comme dans le code ci-dessous

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

Commencez par cela et personnalisez votre vue de liste en fonction de votre scénario

88
biju

Un peu tard pour la fête, mais la solution suivante a fonctionné pour moi. C'est légèrement plus simple/meilleur que les deux autres solutions:

<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>
16
dotNET

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>
1
Dreia Ria