Ich möchte den Hintergrund einer Spalte in einem WPF GridView festlegen. Viele Google-Ergebnisse haben darauf hingewiesen, dass die GridViewColumn.CellTemplate das Aussehen einer Spalte ändern soll. Beim Einstellen der Hintergrundfarbe stößt ich jedoch auf ein Problem. es Stretching nicht um die Zelle zu füllen:Festlegen des Spaltenhintergrunds in WPF ListView/Gridview
Hier ist der XAML Ich arbeite mit:
<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>
Und die xaml.cs für eine gute Maßnahme:
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"},
};
}
}
Rahmen Wenn die Breite und Höhe des DataTemplate-Gitters größer als die der Zelle mit einem negativen Rand ist, kann dies zu einem nahen Ergebnis führen. Wenn Sie jedoch die Größe der Spalte ändern, wird das Problem erneut angezeigt.
<Grid Background="Yellow" Height="22" Width="50" Margin="-6">
Gibt es einen Weg, um die Zelle mit Farbe zu füllen?
Das hilft, die Breite nicht einstellen zu müssen. Zwischen den beiden Spalten besteht jedoch immer noch eine Lücke. Irgendeine Möglichkeit, das zu schließen? – statenjason
Ach, der GridViewRowPresenter programmiert den Randwert fest auf 6,0,6,0. Ich fürchte, es wäre eine Menge Arbeit, um dies zu umgehen. –
Eine hacky Problemumgehung ist, den Rand des enthaltenden Rasters auf -6,0, -6,0 zu setzen. –