WPF DataGrid动态绑定

 foreach (DataColumn column in dt.Columns)
            {
                DateTime t;
                if (DateTime.TryParse(column.ColumnName, out t))//判断表头是否为时期格式
                {

                    DataGridTemplateColumn newTemCol = new DataGridTemplateColumn();
                    newTemCol.Header = column.ColumnName;
                    DataTemplate dataTemplate = new DataTemplate();
                    FrameworkElementFactory tbContent = new FrameworkElementFactory(typeof(TextBlock));
                    // 设置内容
                    tbContent.SetValue(TextBlock.TextProperty, new Binding(column.ColumnName));
                    // 文字颜色
                    tbContent.SetValue(TextBlock.ForegroundProperty, Brushes.Black);

                    //如果是小于今天的日期,背景颜色全为灰
                    if ((DateTime.Parse(column.ColumnName)) <= DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd")))
                    {
                        // 背景颜色
                        tbContent.SetValue(TextBlock.BackgroundProperty, new SolidColorBrush((Color)ColorConverter.ConvertFromString("#808080")));
                    }
                    else
                    {
                        // 背景颜色
                        Binding bindBackColor = new Binding(column.ColumnName);
                        bindBackColor.Converter = new NowTimeBackGroundColor();
                        bindBackColor.ConverterParameter = column.ColumnName;

                        tbContent.SetValue(TextBlock.BackgroundProperty, bindBackColor);
                    }
                    // 单元格长度,用浮点数。
                    tbContent.SetValue(TextBlock.WidthProperty, 80.0);
                    dataTemplate.VisualTree = tbContent;
                    newTemCol.CellTemplate = dataTemplate;
                    dataGrid1.Columns.Add(newTemCol);
                }
                else
                {
                    DataGridTextColumn newCol = new DataGridTextColumn();
                    newCol.Header = column.ColumnName;
                    newCol.Binding = new Binding(column.ColumnName);
                    dataGrid1.Columns.Add(newCol);
                }
            }
            dataGrid1.ItemsSource = dt.DefaultView;

 

posted @ 2014-08-08 12:00  Savant  阅读(1443)  评论(0)    收藏  举报