datagrid的綁定很好用,但有時候我們往往需要根據model內容來動態控制行或者列,該怎麼辦呢?這時候,我們就需要用到行載入事件:在載入每一行數據的時候,根據數據的內容來控制相應的表格顯示。比如我們想要每五行置行底色為紅色,可以這樣: SolidColorBrush r = new SolidC...
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; }
隨便說一下,行載入很好用,但具體控製表格的每一行或某行某列的某個子控制項時,就需要我們做好定位工作,就需要平時積累控制項定位的功夫啦!
比如:
DataGridCell aa = dg_source2.Columns[0].GetCellContent(e.Row) as DataGridCell; //定位到具體單元格(標準列)
先總結到這,學習並積累哈。