接纳DataGrid行加载事件动态调整行列展现

datagrid的绑定很好用,但不时我们频频要求基于model内容来动态调节行如故列,该怎么办吧?

那时候,大家就需求用到行加载事件:在加载每一行数据的时候,依据数据的从头到尾的经过来支配相应的报表展现。

比如我们想要每五行置行底色为深灰,能够如此:

 SolidColorBrush r = new SolidColorBrush(Colors.Red); 
 private void dataGrid1_LoadingRow(object sender, DataGridRowEventArgs e)
        {
            CData c = e.Row.DataContext as CData;
            if (c.id % 5 == 0)
                e.Row.Background = r;
            else
                e.Row.Background = new  SolidColorBrush(Colors.White);

        }

如果,你想依据model的值,改动某一行某一自定义列的体制或内容,你也得以这么:

 private void dg_source2_LoadingRow(object sender, DataGridRowEventArgs e)
        {
            db_lsyjbInfo bindData = (db_lsyjbInfo)e.Row.DataContext;
            TextBox btn = dg_source2.Columns[0].GetCellContent(e.Row).FindName("tb") as TextBox; //定位同比这一列
            if (bindData.zbbm == "xjl")
               btn.IsReadOnly = true;
        }

附带说一下,行加载很好用,但现实调控表格的每一行或某行某列的有些子控件时,就需求我们搞好稳固专门的学问,就须求平日积存控件定位的素养啦!

比如:

TextBlock aa = dg_source2.Columns[0].GetCellContent(e.Row) as TextBlock;  //定位到具体单元格(标准列),这里注意要将具体cell转换为TextBlock方便操作

功效图如下:

图片 1

先总结到那,学习并积存哈。