Program Club

WPF에서 점선 또는 점선 테두리를 어떻게 얻을 수 있습니까?

proclub 2020. 11. 12. 20:30
반응형

WPF에서 점선 또는 점선 테두리를 어떻게 얻을 수 있습니까?


ListViewItem적용하고있는를 가지고 있는데 Style하단에 회색 점선을 넣고 싶습니다 Border.

WPF에서 어떻게 할 수 있습니까? 단색 브러시 만 볼 수 있습니다.


이것은 우리 응용 프로그램에서 훌륭하게 작동하여 실제 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 픽셀 대시를 제공합니다.


아래 코드와 같이 직사각형을 사용하여 점선 또는 파선을 만들 수 있습니다.

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

이것을 시작하고 시나리오에 따라 목록보기를 사용자 정의하십시오.


파티에 조금 늦었지만 다음 솔루션이 저에게 효과적이었습니다. 다른 두 솔루션보다 약간 더 간단하고 좋습니다.

<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

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

참고URL : https://stackoverflow.com/questions/6195395/how-can-i-achieve-a-dashed-or-dotted-border-in-wpf

반응형