web-dev-qa-db-ja.com

WPFで破線または点線の境界線を達成するにはどうすればよいですか?

ListViewItemを適用しているStyleがあり、下のBorderとして灰色の点線を配置したいと思います。

WPFでこれを行うにはどうすればよいですか?単色のブラシしか見えません。

65
dan

これはアプリケーションでうまく機能し、実際の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>

ビューポートが行のダッシュのサイズを決定することに注意してください。この場合、8ピクセルのダッシュが生成されます。 Viewport = "0,0,4,4"は、4ピクセルのダッシュを表示します。

105
Rand Scullard

以下のコードのように長方形を使用して点線または破線を作成できます

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

これを始めて、シナリオに従ってリストビューをカスタマイズしてください

88
biju

パーティーに少し遅れましたが、次の解決策がうまくいきました。他の両方のソリューションよりもわずかにシンプル/優れています。

<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