繁体   English   中英

WPF DataGrid。 更改单细胞背景

[英]WPF DataGrid. Change single cell background

我有大约66列和4000行的数据表

每一行都有一些基于条件的着色

我是WPF的新手,实际上我已经实现了一些基于条件着色datagridview中的行但WPF作为组件DATA GRID

如何基于细胞值实现基于细胞的着色? 在WPF中

早些时候我在Win表单中做了这样的事情

public DataGridView colorGridview(DataGridView G)
        {
            string[] cellsrequired = {"Colnames1",""colname2};

            foreach (DataGridViewRow item in G.Rows)
            {

                foreach (DataGridViewCell cell in item.Cells)
                {
                    if (cellsrequired.Contains(cell.OwningColumn.HeaderText))
                    {
                        string str = cell.FormattedValue.ToString().Trim();
                        //  n / a
                        if (str != "N/A")// Or your condition 
                        {

                            if (str == "SKIP")
                            {
                                cell.Style.BackColor = Color.Orange;
                            }

                            else if (str == "FAIL")
                            {
                                cell.Style.BackColor = Color.Red;
                            }


                            else if (str == "INC")
                            {
                                cell.Style.BackColor = Color.Yellow;
                            }


                            else
                            {
                                cell.Style.BackColor = Color.SpringGreen;
                            }


                        }




                    }
                }

            }


            foreach (DataGridViewRow item in G.Rows)
            {
                if (object.Equals(item.Cells[35].Value, "FAIL"))
                {
                    var myparts = item.Cells[0].Value.ToString();

                    String[] CondtionsonCA = Getcondtion(myparts);

                    foreach (DataGridViewCell cell2 in item.Cells)
                    {
                        if (CondtionsonCA.Contains(cell2.OwningColumn.HeaderText))
                        {

                            string str = cell2.FormattedValue.ToString().Trim();
                            cell2.Style.BackColor = checkForColour(str);

                        }
                    }
                }
            }

            return G;
        }

您可以使用实现IValueConverter接口的值转换器 我链接的文章很好地描述了这个过程,但基本上它是一个小类,它接受任何输入值,检查它,然后返回你想要的东西。 例如,如果单元格值= Good,则返回绿色,如果单元格值= bad,则返回红色。 然后,您需要将单元格样式属性(例如背景)绑定到单元格值,并将转换器设置为该绑定的参数。

background = "{Binding ElementName=txtValue, Path=Text, Converter={StaticResource CellValueToColorConverter}}"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM