Réglage de la Colonne de Fond en WPF ListView/Gridview
Je suis à la recherche pour définir l'arrière-plan d'une colonne dans un WPF GridView. Beaucoup de résultats de Google ont pointé vers le réglage de la GridViewColumn.CellTemplate pour modifier l'apparence d'une colonne. Par contre, j'ai rencontré un problème lors de la définition de la couleur d'arrière-plan; c'est de ne pas étirer pour remplir la cellule:
Voici le code xaml, je travaille avec:
<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>
Et le code xaml.cs pour faire bonne mesure:
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"},
};
}
}
Réglage de la DataTemplate de la Grille de la largeur et de la hauteur pour être plus grand que la cellule avec une marge négative peut produire un résultat serré, mais si vous redimensionnez la colonne, le problème se manifeste de nouveau.
<Grid Background="Yellow" Height="22" Width="50" Margin="-6">
Est-il un moyen de remplir la cellule avec de la couleur?
OriginalL'auteur statenjason | 2009-09-04
Vous devez vous connecter pour publier un commentaire.
Définir la
HorizontalContentAlignment
de laItemContainerStyle
:Résultat:
Hélas, le GridViewRowPresenter dur-codes de la Marge pour 6,0,6,0. J'ai peur que ce serait une bonne quantité de travail pour contourner ce problème.
Un hacky solution de contournement consiste à définir la Marge de l'contenant la Grille pour -6,0,-6,0.
J'ai été d'essayer de résoudre un problème similaire avec la colonne des marges - merci pour le codage en dur. Maintenant, la question est pourquoi? Suppose que nous ne le saurons jamais.
Que faire si vous avez besoin de quelques colonnes de gauche et d'autres de droite? Le style est appliqué à tous.
OriginalL'auteur Kent Boogaart
Déterrer un vieux thread, mais j'ai trouvé un peu louches correctif pour ce
Déplace les marges de sorte que la couleur de fond en comble l'ensemble de la cellule, mais se déplace ensuite en arrière de sorte que le texte est toujours à la bonne place. Fonctionne pour l'instant jusqu'à ce qu'il est fixé correctement.
OriginalL'auteur mike