2010-05-04 20 views
95

¿Cómo pongo un borde en mi cuadrícula en C#/WPF?¿Cómo pongo un borde en mi cuadrícula en WPF?

Esto es lo que me gustaría que fuera, pero pone un borde alrededor de todo, en lugar del control de la cuadrícula que puse en mi aplicación.

<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

¿Qué quiere decir por "toda cosa"? Sospecho que tienes algo más dentro de tu grilla, quizás deberías publicar lo que es. Mi sospecha es que usted tiene algún tipo de control de cuadrícula de datos, así como su contenedor de cuadrícula (que es lo que ha puesto en su muestra y presumiblemente contendría el "todo") y ahí es donde surge la confusión. –

Respuesta

171

Si lo que desea es una frontera exterior, la forma más fácil es ponerlo en un control fronterizo:

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

Editar:

La razón por la que se está viendo la El borde que llena por completo su control es que, de manera predeterminada, su Alineación Horizontal y Alineación Vertical están configuradas en Estirar. Pruebe lo siguiente:

<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> 

Esto debe conseguir lo que está buscando (aunque es posible que desee poner un margen en los 4 lados, no sólo 2 ...)

+0

no funciona como yo quiero ... he agregado un código a mi pregunta. – Jason94

+3

@ Jason94: Actualicé mi respuesta para mostrarle cómo obtener lo que creo que está buscando ... –

+0

@ReedCopsey Reed, sé que su solución funciona, lo que no entiendo es por qué el elemento Border está dentro de la Grilla elemento - ¿no es este contador intuitivo? Gracias. – Sabuncu

5

Si anidando en su cuadrícula un control de fronteras

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

no hace lo que quiere, entonces usted va a tener que hacer su propia plantilla de control de la red (o borde) que hace lo que quiere.

+0

oh ... okey: D pensé que había una variable que se pasa por alto o algo sofisticado WPF (soy nuevo en esto: D) – Jason94

+0

No puedes crear una plantilla para Grid y Border porque no tienen propiedad Template porque no se derivan de Control , pero desde Panel y Decorador. [Reed Copsey tiene la (bastante simple) solución] (http://stackoverflow.com/questions/2769291/how-do-i-put-a-border-on-my-grid-in-wpf/2769312#2769312) . – gehho

1

Creo que su problema es que el margen debe especificarse en la etiqueta de borde y no en la cuadrícula.

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

Este código envolver un borde interior de la "InnerGrid"

+0

No funciona –

+0

Hola @ElvinMammadov. ¿Puedes describir más? ¿Estás recibiendo algún error? Este código funciona bien para mí. – PJ3

Cuestiones relacionadas