2013-02-18 110 views
2

我試圖在按鈕周圍繪製虛線邊框,但是不顯示邊框。不知道我在這裏做錯了什麼,你能幫忙嗎?按鈕周圍的虛線邊框

我的XAML代碼:

<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
Height="300" Width="300"> 

    <Grid Background="Ivory"> 
     <Border Width="101" Height="31"> 
      <Border.BorderBrush> 
       <VisualBrush> 
        <VisualBrush.Visual> 
         <Rectangle StrokeThickness="1" Stroke="Red" StrokeDashArray="1 2"/> 
        </VisualBrush.Visual> 
       </VisualBrush> 
      </Border.BorderBrush> 
      <Button Width="100" Height="30"> 
       Focus Here</Button> 
     </Border> 
    </Grid> 
</Page> 

注意:眼前的問題是有邊框的厚度,但仍即使加入了borderThickness之後,虛線邊框沒有出現。

+2

難道你還需要設置'BorderThickness'爲大於0? 'StrokeThickness'是畫筆筆觸,邊框上的BorderThickness決定了知名度,據我所知 – Charleh 2013-02-18 12:12:49

+0

我還沒有看到過像這樣的虛線邊框 - 你是否嘗試將'Rectangle'尺寸設置爲與邊框相同。可能與矩形大小有關? – Charleh 2013-02-18 12:17:55

+0

是的,這是問題 - 我認爲邊界實際上在做的是爲自己的每個「邊緣」渲染一個畫筆,基本上渲染4個矩形。如果你設置的大小矩形都是正確的大小,但基於其原點正確居中,所以看起來很好。獲得虛線邊界可能有更好的方法... – Charleh 2013-02-18 12:24:29

回答

4

視覺的VisualBrush的是無法自動確定其大小,因此VisualBrush未根據邊框的大小繪製。另外請注意,您需要爲Border和Rectangle設置相同的BorderThickness。看看下面的XAML。希望它能對你有好處。

<Border x:Name="MyBorderedButton" Width="101" Height="31" BorderThickness="2" > 
     <Border.BorderBrush> 
      <VisualBrush> 
       <VisualBrush.Visual> 
        <Rectangle StrokeDashArray="4 2" 
         Stroke="Red" 
         StrokeThickness="2" 
         RadiusX="{Binding RelativeSource={RelativeSource AncestorType={x:Type Border}}, Path=CornerRadius.TopRight}" 
         RadiusY="{Binding RelativeSource={RelativeSource AncestorType={x:Type Border}}, Path=CornerRadius.BottomLeft}" 
         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> 
     <Button>Focus Here</Button> 
</Border> 

它的工作對我來說

​​

2

在您的解決方案,您的矩形沒有大小,所以當它被繪製,沒有什麼畫,解決的辦法是繼承父邊框大小:

<Border Width="101" Height="31" BorderThickness="1"> 
    <Border.BorderBrush> 
     <VisualBrush> 
      <VisualBrush.Visual> 
       <Rectangle StrokeThickness="1" 
        Stroke="Red" 
        StrokeDashArray="1 2" 
        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> 
    <Button> 
     Focus Here 
    </Button> 
</Border>