【问题标题】:How to change text color of cell in edit mode in Silverlight DataGrid?如何在 Silverlight DataGrid 中更改编辑模式下单元格的文本颜色?
【发布时间】:2011-10-27 14:27:19
【问题描述】:

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

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

【问题讨论】:

    标签: silverlight silverlight-4.0 datagrid


    【解决方案1】:

    尝试改变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; }
        }
    }
    

    【讨论】:

    • 抱歉,这不起作用。它确实改变了单元格的前景色,但是在编辑模式中,当单元格的文本没有被选中时,前景色仍然是黑色的。
    • 您可能在某处有一些冲突的样式。您是在使用主题还是自己设计所有内容 - 如果是的话,如何?
    猜你喜欢
    • 1970-01-01
    • 2021-04-06
    • 2013-09-29
    • 1970-01-01
    • 2015-05-14
    • 2017-08-07
    • 2015-08-30
    • 1970-01-01
    • 2023-03-28
    相关资源
    最近更新 更多