DataGridCellの背景を変更すると、DataGridTextColumnのTextBoxの背景が透明になるため、セルの背景を取得する必要があります。
<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>
ここでは上記のXAMLのための分離コードです:
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; }
}
}
申し訳ありませんが、それは動作しませんが、ここで
は私のために働いたものです。セルの前景色を変更しますが、**編集モード**では、セルのテキストが選択されていないときは、前景色はまだ黒です。 – Tobias
どこかに競合するスタイルがあるかもしれません。あなたはテーマを使用しているのですか、それとも自分ですべてをスタイリングしていますか? –