从Silverlight 4中的代码隐藏中更改DataGridCell的背景

我正在编写一个Silverlight应用程序,让您通过输入的分隔符分析复制的文本。 数据解析并放入网格后,用户可以“清理”数据。 这将单元格的当前值与列的允许值进行比较,选择最佳猜测并通过ItemsSource属性将数据重新绑定到网格。

我的问题是,我知道每个已经被“擦洗”的单元的坐标,并且我想突出显示这个单元或者改变它的背景颜色。 据我所见,你可以单独设置一个DataGridCell的背景,但我无法访问DataGridCell。 我可以访问网格的列和行,但是这些也没有像我期望的那样访问DataGridCell。 ItemsSource被设置后,有没有人有办法访问DataGridCell?


如果你循环了你的ItemsSource所绑定的集合,那么你可以获取每一行,并通过获取内容和单元格的列 - 像这样(技巧是content.Parent作为DataGridCell):

var collection = grid.ItemsSource;
foreach (var dataItem in collection)
{
  foreach (var col in grid.Columns)
  {
    var content = col.GetCellContent(dataItem);
    if (content != null)
    {
        DataGridCell cell = content.Parent as DataGridCell;
        // do whatever you need to do with the cell like setting cell.Background 
    }
  }
}

此代码可用于更改单元格的颜色。

void datagrid_LoadingRow()
    {

        var collection = datagrid.ItemsSource;
        foreach (var dataItem in collection)
        {
            foreach (var col in datagrid.Columns)
            {
                var content1 = col.GetCellContent(dataItem);
                if (content1 != null)
                {
                    TextBlock block = content1 as TextBlock;
                    if (block != null)
                    {
                        DataGridCell cell = content1.Parent as DataGridCell;

                        string cellText = block.Text;
                        if (cellText == "True")
                        {
                            cell.Background = new SolidColorBrush(Colors.Green);
                        }
                        if (cellText == "False")
                        {
                            cell.Background = new SolidColorBrush(Colors.Red);
                        }                            
                    }


                }                  

            }
        }
    } 
链接地址: http://www.djcxy.com/p/71117.html

上一篇: Change a DataGridCell's background from the codebehind in Silverlight 4

下一篇: Problem changing the Foreground colour of a WPF DataGrid Cell using MultiBinding