1

我有一个包含多个项目的 GridView(10 个项目从列表中绑定)。并且(举个简单的例子)让我有一个文本字段和按钮。在文本字段中,我将键入从 0 到 9 的数字。当我单击按钮时,我想更改项目的背景,并在文本字段中键入索引。因此,当我键入 0 时,我希望第一项更改背景等。我有一个全局列表,我可以从该列表中获取对象,但我不知道如何在 gridview 上更改该项目的背景

4

2 回答 2

1

您可以为该不同的项目创建一个DataTemplate (仅更改其背景)。然后,使用TemplateSelector,您可以确定您只想将该模板应用于其编号与绑定到 TextBox 的编号匹配的项目。

public class GridViewDataTemplateSelector : DataTemplateSelector
{
    public override DataTemplate
        SelectTemplate(object item, DependencyObject container)
    {
        FrameworkElement element = container as FrameworkElement;

        if (element != null && item != null && item is GridViewRow)
        {
            GridViewRow  rowitem = item as GridViewRow;

            // Here's where you compare with actual selected number (change 1 with the method call to obtain it.
            if (GridViewRow.RowIndex == 1) 
                return
                    element.FindResource("SpecialBackgroundRowTemplate") as DataTemplate;
            else 
                return
                    element.FindResource("NormalBackgroundRowTemplate") as DataTemplate;
        }

        return null;
    }
}

这里SpecialBackgroundRowTemplateNormalBackgroundRowTemplate是 DataTemplates,您将在其中为给定的网格行设置正常背景和聚焦背景。

于 2012-09-25T17:09:27.787 回答
0

您可以定义DataGridViewCellStyle对象并设置它的属性,然后从您的 datagridview 调用任何单元格 -

DataGridViewCellStyle dgvs = new DataGridViewCellStyle();   
dgvs.BackColor = Color.Red;
yourDGV.Rows[0].Cells[0].Style = dgvs;
于 2012-09-25T17:16:10.697 回答