2013-06-05 82 views
14

我知道我可以創建一個矩形虛線邊框或不同的筆畫粗細的不同側面邊框:WPF在兩側有不同筆劃粗細的矩形或帶有虛線筆劃的邊框?

 <StackPanel Orientation="Horizontal"> 
      <Rectangle Stroke="Green" StrokeThickness="2" StrokeDashArray="4 2" Fill="LightGreen" Height="64" Width="32" Margin="5"/> 
      <Border BorderBrush="Green" BorderThickness="2,2,2,0" Background="LightGreen" Height="64" Width="32" Margin="5" /> 
     </StackPanel> 

enter image description here

反正我有能夠同時實現:

enter image description here

更新:這需要填充它的父級中的空間(與我的固定大小的示例不同),例如,一個網格 - 所以具有固定大小和我自己的筆的DrawingGeometry不能用於實現這個..可以嗎?

回答

20

試試這個:

<Border BorderThickness="4,4,4,0" Background="LightGreen"> 
    <Border.BorderBrush> 
     <VisualBrush> 
      <VisualBrush.Visual> 
       <Rectangle 
        Stroke="Green" Fill="LightGreen" 
        StrokeDashArray="4 2" 
        StrokeThickness="4" 
        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> 
</Border> 

它的邊界,所以當放在網格內部它將使用可用空間,並且可以爲每一邊設置不同的寬度,它使用矩形作爲視覺畫筆,因此您可以輕鬆地將邊框設置爲虛線。

enter image description here

+0

好的!我從來不知道我可以像這樣定義自己的畫筆! – markmnl

1

哈克解決方案,但它的工作原理是覆蓋你想隱藏的虛線矩形的一面:

  <Grid Width="100" Height="100"> 
       <Rectangle Stroke="Green" StrokeThickness="4" StrokeDashArray="4 2" Fill="LightGreen" Margin="10"/> 
       <Rectangle StrokeThickness="0" Height="4" Margin="10" VerticalAlignment="Bottom" Fill="LightGreen"/> 
      </Grid> 

enter image description here