Estoy buscando establecer el fondo de una columna en un WPF GridView. Muchos resultados de Google han apuntado hacia la configuración de GridViewColumn.CellTemplate para cambiar la apariencia de una columna. Sin embargo, me encontré con un problema al establecer el color de fondo; no se extiende hasta llenar la celda:Configuración de fondo de columna en WPF ListView/Gridview
Aquí está la xaml estoy trabajando con:
<Window x:Class="ScratchPadWpf.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Width="300" Height="300">
<Grid>
<ListView ItemsSource="{Binding}">
<ListView.View>
<GridView>
<GridViewColumn>
<GridViewColumn.CellTemplate>
<DataTemplate>
<Grid Background="Red">
<TextBlock Text="{Binding FirstName}"/>
</Grid>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn>
<GridViewColumn.CellTemplate>
<DataTemplate>
<Grid Background="Yellow">
<TextBlock Text="{Binding LastName}"/>
</Grid>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
</Grid>
</Window>
Y los xaml.cs para la buena medida:
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
DataContext = new[]
{
new {FirstName = "Jim", LastName = "Bob"},
new {FirstName = "Frank", LastName = "Smith"},
new {FirstName = "Tooth", LastName = "Paste"},
};
}
}
Ajuste el ancho y la altura de la cuadrícula de la plantilla de datos es mayor que la celda con un margen negativo y puede producir un resultado cercano, pero si cambia el tamaño de la columna, el problema se muestra de nuevo.
<Grid Background="Yellow" Height="22" Width="50" Margin="-6">
¿Hay una manera de llenar la celda con el color?
Eso ayuda a no tener que establecer el ancho. Sin embargo, todavía hay un espacio entre las dos columnas. ¿Alguna manera de cerrar eso? – statenjason
Por desgracia, el GridViewRowPresenter codifica el Margen a 6,0,6,0. Me temo que sería una buena cantidad de trabajo solucionar este problema. –
Una solución hacky es establecer el margen de la cuadrícula que contiene a -6,0, -6,0. –