2010-05-04 16 views
95

Come inserisco un bordo nella mia griglia in C#/WPF?Come posso inserire un bordo nella mia griglia in WPF?

Questo è ciò che mi piacerebbe fosse, ma mette un bordo attorno all'intera cosa invece del controllo della griglia che ho inserito nella mia applicazione.

<Grid> 
    <Border BorderBrush="Black" BorderThickness="2"> 
     <Grid Height="166" HorizontalAlignment="Left" Margin="12,12,0,0" Name="grid1" VerticalAlignment="Top" Width="479" Background="#FFF2F2F2" /> 
    </Border> 
... and so on ... 
+1

Cosa si intende per "tutto"? Sospetto che tu abbia qualcos'altro nella tua griglia: dovresti forse postare cosa sia. Il mio sospetto è che tu abbia una sorta di controllo datagrid e anche il tuo contenitore della griglia (che è quello che hai inserito nel tuo campione e che presumibilmente contenga la "cosa intera") ed è qui che si crea la confusione. –

risposta

171

Se si desidera solo un bordo esterno, il modo più semplice è quello di metterla in un controllo di frontiera:

<Border BorderBrush="Black" BorderThickness="2"> 
    <Grid> 
     <!-- Grid contents here --> 
    </Grid> 
</Border> 

Edit:

Il motivo che stai vedendo la bordo completamente riempire il vostro controllo è che, per impostazione predefinita, è HorizontalAlignment e VerticalAlignment sono impostati su Stretch. Provare quanto segue:

<Grid> 
    <Border HorizontalAlignment="Left" VerticalAlignment="Top" BorderBrush="Black" BorderThickness="2"> 
     <Grid Height="166" HorizontalAlignment="Left" Margin="12,12,0,0" Name="grid1" VerticalAlignment="Top" Width="479" Background="#FFF2F2F2" /> 
    </Border> 
</Grid> 

Questo dovrebbe farti quello che stai cercando (anche se si consiglia di mettere un margine sui 4 lati, non solo 2 ...)

+0

non funziona come voglio ... ho aggiunto del codice alla mia domanda. – Jason94

+3

@ Jason94: ho aggiornato la mia risposta per mostrarti come ottenere quello che penso tu stia cercando ... –

+0

@ReedCopsey Reed, so che la tua soluzione funziona, quello che non capisco è perché l'elemento Border è all'interno della griglia elemento - non è questo contatore intuitivo? Grazie. – Sabuncu

5

Se nidificazione griglia in un controllo delle frontiere

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

non fa quello che si vuole, allora si sta andando ad avere per rendere il proprio modello di controllo per la griglia (o confine) che fa fare quello che vuoi.

+0

oh ... okey: D pensavo ci fosse una variabile trascurata o qualcosa di fantasia WPF (im new at it: D) ​​ – Jason94

+0

Non è possibile creare un modello per Grid e Border perché non hanno alcuna proprietà Template in quanto non derivano da Control , ma da Panel e Decorator. [Reed Copsey ha la (piuttosto semplice) soluzione] (http://stackoverflow.com/questions/2769291/how-do-i-put-a-border-on-my-grid-in-wpf/2769312#2769312) . – gehho

1

Penso che il problema sia che il margine deve essere specificato nel tag di confine e non nella griglia.

0
<Grid x:Name="outerGrid"> 
    <Grid x:Name="innerGrid"> 
     <Border BorderBrush="#FF179AC8" BorderThickness="2" /> 
     <other stuff></other stuff> 
     <other stuff></other stuff> 
    </Grid> 
</Grid> 

Questo codice Avvolgere un bordo all'interno del "innerGrid"

+0

Non funziona –

+0

Ciao @ElvinMammadov. Puoi descrivere di più Stai riscontrando errori? Questo codice funziona bene per me. – PJ3

Problemi correlati