如何在GridView中更改单个项目的背景

时间:2012-09-25 17:05:12

标签: c# xaml microsoft-metro windows-runtime winrt-xaml

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

2 个答案:

答案 0 :(得分: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,您可以在其中设置给定网格行的正常背景和聚焦背景。

答案 1 :(得分:0)

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

DataGridViewCellStyle dgvs = new DataGridViewCellStyle();   
dgvs.BackColor = Color.Red;
yourDGV.Rows[0].Cells[0].Style = dgvs;