Essayez de modifier l'arrière-plan de DataGridCell, l'arrière-plan de TextBox dans DataGridTextColumn est transparent, il doit donc capturer l'arrière-plan de la cellule.
Voici quelque chose qui a fonctionné pour moi:
<UserControl xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk"
x:Class="DataGridTextBoxBackground.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:p="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="400">
<Grid x:Name="LayoutRoot" Background="White">
<Grid.Resources>
<Style TargetType="p:DataGridCell">
<Setter Property="Background" Value="Black" />
<Setter Property="Foreground" Value="White" />
</Style>
</Grid.Resources>
<sdk:DataGrid x:Name="gridItems" AutoGenerateColumns="False">
<sdk:DataGrid.Columns>
<sdk:DataGridTextColumn Binding="{Binding Name}" Header="Name" />
</sdk:DataGrid.Columns>
</sdk:DataGrid>
</Grid>
Voici le codebehind pour le XAML ci-dessus:
namespace DataGridTextBoxBackground
{
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
this.Loaded += new RoutedEventHandler(MainPage_Loaded);
}
void MainPage_Loaded(object sender, RoutedEventArgs e)
{
List<DataItem> items = new List<DataItem>();
items.Add(new DataItem("item 1"));
items.Add(new DataItem("item 2"));
items.Add(new DataItem("item 3"));
items.Add(new DataItem("item 4"));
items.Add(new DataItem("item 5"));
this.gridItems.ItemsSource = items;
}
}
public class DataItem
{
public DataItem() { }
public DataItem(string name)
{
Name = name;
}
public string Name { get; set; }
}
}
Désolé, cela ne fonctionne pas. Cela change la couleur de premier plan de la cellule, mais en ** mode édition **, lorsque le texte de la cellule n'est pas sélectionné, la couleur de premier plan est toujours noire. – Tobias
Vous pourriez avoir des styles conflictuels quelque part. Utilisez-vous un thème ou est-ce que vous stylisez tout vous-même? Si oui, comment? –