如何在Silverlight DataGrid中以编辑模式更改单元格的文本颜色?

时间:2011-10-27 14:27:19

标签: silverlight silverlight-4.0 datagrid

在Silverlight 4中,我有DataGridDataGridTextColumn。此列中的单元格是可编辑的。现在我遇到的问题是我将整个网格的颜色改为黑色而不是白色的默认黑色。我设法更改了所有相关颜色,但编辑模式下文本颜色除外。这仍然是黑色的,所以看起来很糟糕。

任何提示怎么做?我现在花了很多时间谷歌搜索和搜索这个问题,但没有找到解决方案。提前谢谢!

1 个答案:

答案 0 :(得分:0)

尝试更改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; }
    }
}
相关问题