2010-05-28 7 views

risposta

12

Potete sostituire il confine con una griglia e dargli un rettangolo che riempie l'intera area?

<Rectangle Stretch="Fill" RadiusX="10" RadiusY="10" StrokeDashArray="10, 2" Stroke="Black" Fill="White" /> 

Lo StrokeDashArray può essere utilizzato per disegnare costellato ma un bordo non ha tale proprietà.

EDIT:

Da quando ho notato che si sta solo che punteggiano il bordo inferiore si potrebbe fare qualcosa di simile

<Border Width="100" Height="100" Background="Blue" BorderThickness="0,0,0,1"> 
    <Border.BorderBrush> 
     <LinearGradientBrush StartPoint="0,0" EndPoint=".2,0" SpreadMethod="Repeat" > 
      <GradientStopCollection> 
       <GradientStop Color="Transparent" Offset="0" /> 
       <GradientStop Color="Transparent" Offset="0.3" /> 
       <GradientStop Color="Red" Offset="0.3" /> 
       <GradientStop Color="Red" Offset="0.6" /> 
       <GradientStop Color="Transparent" Offset="0.6" /> 
       <GradientStop Color="Transparent" Offset="1" /> 
      </GradientStopCollection> 
     </LinearGradientBrush> 
    </Border.BorderBrush> 
</Border> 

Regolare la Offset del centro due GradientStop di per regolare la larghezza del punto rosso/dash. Potrebbe anche essere necessario regolare l'endpoint per farlo ripetere all'intervallo desiderato.

+2

Se non si desidera che i trattini lungo la linea si spostino mentre viene ridimensionato, è necessario impostare 'MappingMode =" Absolute "' su LinearGradientBrush'. Potrebbe anche essere necessario modificare alcuni altri parametri dopo aver apportato tale modifica. –

6

La risposta di Stephan è utile. Tuttavia, se si desidera una semplice linea tratteggiata che non si estendono su come viene ridimensionata, provate questo XAML:

<!-- Horizontal dotted line --> 
<Border HorizontalAlignment="Stretch" Height="1" BorderThickness="0,0,0,1"> 
    <Border.BorderBrush> 
    <LinearGradientBrush StartPoint="0,0" EndPoint="2,0" 
         SpreadMethod="Repeat" MappingMode="Absolute"> 
     <GradientStop Color="Transparent" Offset="0" /> 
     <GradientStop Color="Transparent" Offset="0.499" /> 
     <GradientStop Color="#999" Offset="0.5" /> 
    </LinearGradientBrush> 
    </Border.BorderBrush>        
</Border> 

Ecco un'alternativa per una linea tratteggiata verticale:

<!-- Vertical dotted line --> 
<Border VerticalAlignment="Stretch" Width="1" BorderThickness="0,0,1,0"> 
    <Border.BorderBrush> 
    <LinearGradientBrush StartPoint="0,0" EndPoint="0,2" 
         SpreadMethod="Repeat" MappingMode="Absolute"> 
     <GradientStop Color="Transparent" Offset="0" /> 
     <GradientStop Color="Transparent" Offset="0.499" /> 
     <GradientStop Color="#999" Offset="0.5" /> 
    </LinearGradientBrush> 
    </Border.BorderBrush>        
</Border> 

Per coincidenza, se si usa questo pennello su un'area che non è alta 1px/alta, quindi ottieni un bel motivo gessato.

Problemi correlati