rowspan form columns column colspan wpf grid wpf-controls

form - Cómo establecer el borde de la fila y el color de fondo en la cuadrícula de WPF



wpf form design (4)

Aquí hay un poco de un hack que parece funcionar bien. Si coloca un elemento de fondo en las filas / columnas junto con los elementos que normalmente ubicaría allí, actuará como fondo. Solo debe preocuparse por el orden de los elementos en el XAML (los elementos aparecen en orden Z en aumento), o configurar el Panel.Zorder en consecuencia.

<Window x:Class="gridBackground.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="350" Width="525"> <Grid> <Grid.RowDefinitions> <RowDefinition/> <RowDefinition/> <RowDefinition/> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition/> <ColumnDefinition/> </Grid.ColumnDefinitions> <Border Background="Red" /> <Border Grid.Row="2" Grid.Column="1" Background="Red" /> <Border Grid.Row="1" Background="LightBlue" /> <Border Grid.Row="2" Background="Orange" /> <Border Grid.Row="0" Grid.Column="1" Background="Orange" /> <TextBlock Grid.ColumnSpan="2" Grid.Row="1" Text="Here is some more text" HorizontalAlignment="Center" VerticalAlignment="Center"/> <TextBlock Grid.ColumnSpan="2" Text="Here is some text" HorizontalAlignment="Center" VerticalAlignment="Center"/> <TextBlock Grid.ColumnSpan="2" Grid.Row="2" Text="Here is even more text" HorizontalAlignment="Center" VerticalAlignment="Center"/> </Grid> </Window>

Se parece a esto:

¿Cómo podemos establecer el borde y el color de fondo en el control de cuadrícula de WPF,
Estoy creando filas y columnas dinámicamente y agregando luego a la cuadrícula,
¿Podemos establecer el color y el borde del código detrás?


depende de lo que intentes hacer con esta cuadrícula, pero supongo que quieres rellenar las celdas de la cuadrícula con controles.

Tendrá que establecer las propiedades de Fondo y borde (Trazo) en los controles y luego encapsular cada uno de sus controles en un Borde primero.

Pero, por supuesto, si desea el mismo color de fondo para cada celda, establezca el fondo de la cuadrícula. :)

Espero haber respondido bien.


El color de Background solo se puede configurar para toda la Grid usando la propiedad de Background :

<Grid Background="Red" />

O si desea que se establezca para celdas individuales, debe agregar un elemento a la celda que tiene su propiedad de Background establecida.

En cuanto a los Bordes, una Grid solo contiene la propiedad ShowGridLines , que se puede usar para mostrar líneas de puntos finas que no pueden ser estilizadas.

Por MSDN:

Solo están disponibles las líneas de puntos porque esta propiedad está pensada como una herramienta de diseño para depurar problemas de diseño y no está diseñada para usarse en el código de calidad de producción. Si desea que las líneas dentro de una cuadrícula, el estilo de los elementos dentro de la cuadrícula para tener bordes.

Por lo tanto, para agregar bordes a su cuadrícula, debe agregar elementos de borde o controles que contengan un Border a las celdas de la cuadrícula y diseñar esos elementos.

Pero hay una alternativa. Esta publicación del blog describe cómo puede extender la clase Grid para crear una Grid personalizada que tenga propiedades para Grid líneas de Grid . Lo he usado con éxito en el pasado cuando quería representar líneas de cuadrícula, pero no quería llenar cada celda con un objeto.

<my:CustomGrid ShowCustomGridLines="True" GridLineBrush="Blue" GridLineThickness="1">


<Border Grid.Row="12" Grid.Column="0" Grid.ColumnSpan="12" Background="#fff" BorderBrush="Blue" BorderThickness="2"/>