2013-08-26 19 views
5

Se si dispone di:Come evitare che i bordi a doppio spessore si sovrappongano?

<Grid > 
    <Grid.RowDefinitions> 
    <RowDefinition Height="*"/> 
    <RowDefinition Height="2*"/> 
    <RowDefinition Height="*"/> 
    </Grid.RowDefinitions> 
</Grid> 

e inserire un bordo dello spessore da 1 in ogni griglia, si otterrà doppio spessore, al confine tra le file della griglia. È l'unico modo per affrontare questo per specificare lo spessore su ogni bordo del bordo o c'è qualche controllo che creerà bordi intorno alla rete per ogni colonna, senza dover doppio spessore?

Attualmente tentare con questo:

    <Border 
         BorderBrush="Black" 
         BorderThickness="1" 
         Margin="19,0,0,0" 
         Background="LightGray" 
         > 
         <Viewbox VerticalAlignment="Stretch" HorizontalAlignment="Stretch"> 
         <Grid> 
          <Grid.RowDefinitions> 
          <RowDefinition Height="*"/> 
          <RowDefinition Height="2*"/> 
          <RowDefinition Height="*"/> 
          </Grid.RowDefinitions> 
          <Grid.ColumnDefinitions> 
         <ColumnDefinition Width="*"/> 
         <ColumnDefinition Width="Auto"/> 
         <ColumnDefinition Width="Auto"/> 
         </Grid.ColumnDefinitions> 

         <TextBlock 
         Grid.Row="1" 
         Grid.Column="0" 
         x:Name="TreeViewHeaderTextBox" 
         VerticalAlignment="Center" 
         HorizontalAlignment="Center" 
         Text="Time" 
         Foreground="Black" 
         /> 


         <TextBlock 
         Grid.Row="1" 
         Grid.Column="1" 
         Text="X" 
         TextAlignment="Center" 
         HorizontalAlignment="Stretch" 
         VerticalAlignment="Center" 
         /> 

         <TextBlock 
         Grid.Row="1" 
         Grid.Column="2" 
         Text="O" 
         TextAlignment="Center" 
         HorizontalAlignment="Stretch" 
         VerticalAlignment="Center" 
         /> 

        </Grid> 
        </Viewbox> 
       </Border> 

Tuttavia, ho iniziato a fare le modifiche al vecchio codice quindi questo non è un buon esempio dei doppi bordi. Tuttavia, sto ottenendo anche i doppi confini da questo modello.

   <Border Name="Bd" 
         Grid.Column="1" 
         Background="{TemplateBinding Background}" 
         BorderBrush="{TemplateBinding BorderBrush}" 
         BorderThickness="{TemplateBinding BorderThickness}" 
         Padding="{TemplateBinding Padding}" 
         SnapsToDevicePixels="true"> 
       <ContentPresenter x:Name="PART_Header" 
            ContentSource="Header" 
            HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" 
            SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/> 
       </Border> 

poiché ogni articolo finisce con un bordo a doppio spessore in cui tocca l'elemento successivo.

modifica 2: Dopo aver letto i commenti mi sono reso conto che probabilmente non dovrei avere un bordo definito nel datatemplate per il controllo e invece basta impostare il bordo attraverso il controllo e modificare il modello sul controltemplate. Da questo potrebbe ottenere dei doppi confini.

+1

Indicare come si sta attualmente impostando lo spessore del bordo. – Paparazzi

+0

Ho avuto confini all'interno della griglia che stavo cambiando lo spessore del bordo di. Forse ho solo bisogno di uno per la griglia più esterna e avvolgerà ogni elemento. Ciò ha senso. quello o forse c'è una proprietà di spessore del bordo della griglia. Io voglio andare a vedere in esso –

+1

Avete mai sentito l'espressione XAML vale più di mille parole? – Paparazzi

risposta

1

Se si avvolge griglia in un elemento di confine e di impostare lo spessore Credo che mette un confine tra ogni elemento della griglia ed evita il bordo raddoppiato - cercando di verificare questa ora.

+0

questo ha senso. Avrei dovuto pensarci. L'ho trovato strano e sono andato avanti. Mi metterà alla prova ora –

+0

Speranza che aiuta - non riuscivo a trovare un progetto che ho potuto testare in fretta e ha dovuto andare avanti per un po '. Se non hai ancora successo cercherò di scavare qualcosa. So che l'ho visto fatto con una singola impostazione del bordo. – Matthew

1

spessore può essere impostato = "left, top, destro, inferiore", che significa che è possibile impostare le parti sovrapposte alla metà.

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="*"/> 
     <RowDefinition Height="2*"/> 
     <RowDefinition Height="*"/> 
    </Grid.RowDefinitions> 
    <Border BorderThickness="1,1,1,0.5" BorderBrush="Black"/> 
    <Border BorderThickness="1,0.5" BorderBrush="Black" Grid.Row="1" /> 
    <Border BorderThickness="1,0.5,1,1" BorderBrush="Black" Grid.Row="2" /> 
</Grid> 
Problemi correlati