2011-05-19 9 views
19

Parece que fila de la cuadrícula y definiciones de las columnas están codificadas de esta manera:Rejilla WPF: ¿Hay alguna manera fácil de reajustar los elementos de la fila si necesito insertar nuevas filas?

Grid.Row="3" Grid.Column="1" 

estoy en el medio del desarrollo de una nueva aplicación de WPF y estoy teniendo añadir constantemente y eliminar filas nuevas de mi rejilla mientras el cliente toma una decisión sobre cómo debería verse la forma. Estoy descubriendo que esta es una tarea bastante tediosa. Si inserto una fila cerca de la parte superior, tengo que cambiar manualmente todos los índices de fila en el XAML debajo de la fila que acabo de insertar.

¿Hay alguna manera fácil de ajustar automáticamente todas las filas?

+5

Si 2010, se utiliza el diseñador para agregar o eliminar una fila/columna se ajustará everythin para usted. Haga clic con el botón derecho donde desea la nueva fila de selección de fila y luego inserte. Esta es una de las pocas cosas que el diseñador hace bien y fácilmente. – PatFromCanada

Respuesta

3

A Grid es una cuadrícula y las filas y columnas están numeradas por un motivo específico. Es como un pedazo de papel cuadriculado dividido en un número fijo de cuadrados. Debido a que el número de filas y columnas es fijo, puede hacer cosas potentes como la extensión de filas y columnas. Por el contrario, esto es no flexible para un número variable de filas o columnas.

Si necesita un número variable de filas, o agrega continuamente filas en el momento del diseño, entonces es posible que Grid no sea el mejor elemento de diseño para usted. O mejor aún, puede usar el Grid en combinación con otro elemento de diseño para obtener la flexibilidad que necesita.

Por ejemplo, puede poner todas las filas de variables en una única fila Grid y ahora el recuento de filas de la cuadrícula ya no cambia. Pero luego necesitará un elemento de diseño que admita un número variable de filas para poner en esa fila Grid. Bueno, hay muchos para elegir, pero dos por ejemplo que son útiles son StackPanel y DockPanel.

El elemento de disposición DockPanel en particular es muy potente para números variables de filas o columnas, particularmente cuando se usa como DockPanels dentro de DockPanels u otras combinaciones. Todo lo que necesita para solucionar este problema de diseño es subdividir y conquistar!

Aquí es una introducción a DockPanel: WPF Tutorial: Dock Panel

+0

Acabo de enterarme de esto y su idea de stackpanel funciona muy bien. Configuré un panel de distribución con orientación vertical para servir como mi tabla. Luego uso una serie de paneles de distribución horizontal dentro de cada uno de ellos para que sirvan como filas, cada uno con dos controles, una etiqueta y un cuadro de texto. Para asegurarme de que todas las etiquetas tienen el mismo ancho, creo un estilo para establecer sus propiedades de ancho. ¡Ahora mover las filas es muy fácil! – oscilatingcretin

+0

Esto no responde al problema real aquí, es muy molesto/tedioso tener que actualizar los índices de filas cada vez que quiera agregar o quitar una fila a una Grilla. Aunque solo sea unas pocas veces durante el diseño, aún es tedioso. El comentario de PatFromCanada es una respuesta mucho mejor; use el diseñador en su lugar. – makhdumi

2

No hay manera fácil de ajustar automáticamente sus filas/columnas para una Grid.

Una alternativa potencial que he usado en el pasado es un UniformGrid ya que no necesita una referencia de fila/columna en cada elemento. Es bueno para bloquear marcadores de posición para los datos.

Si está haciendo diseños iniciales, le recomendaría simplemente usar la interfaz Arrastrar/Soltar en Visual Studio o una herramienta de diseño como Balsamiq o Blend. Balsamiq es mi favorito, ya que intencionalmente no se ve como una aplicación real, por lo que los clientes no se quedan colgados de la apariencia real de la cosa y se centran en los datos en su lugar.

0

Sé que esta es una pregunta muy vieja, pero en caso de que alguien más se encuentre con ella, en Visual Studio 2013 (quizás antes también, no estoy seguro) puede pasar el cursor sobre la cuadrícula y le permitirá divide una fila en dos filas.

Hará que las filas tengan un alto de número establecido, por lo que es probable que necesite volver atrás y cambiar a 'Auto' o '*' o lo que quiera usar.También hace que cualquier cosa en la fila original abarque ambas filas, por lo que necesitaría eliminar el atributo RowSpan = "2" en esos elementos y colocarlos en las filas correctas, pero presionará automáticamente todos los elementos en las filas inferiores.

No es completamente automático y hay una pequeña limpieza, pero si tiene muchas filas, es más rápido que volver a numerar todo manualmente.

10

En Visual Studio 2015 también puede colocar el cursor sobre el borde de una fila y aparecerá un pequeño cuadro desplegable. Al hacer clic en la flecha hacia abajo, dos de las opciones son "mover fila antes" y "mover fila después". Esa es la mejor manera que he encontrado.

imagen Ejemplo:

screenshot

+0

¡genial! si pudiera incluir una captura de pantalla en su respuesta que sería muy apreciada. – Elias

+0

Esta respuesta es legendaria, no tienes idea de lo que ahorra tiempo. ¡Gracias! – NimbusHex

+0

esta es en realidad la respuesta. muchas gracias –

Cuestiones relacionadas