麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

改變DataGrid某一行和單元格的顏色

2019-11-14 16:27:27
字體:
來源:轉載
供稿:網友

前段時間做WPF項目,需要改變DataGrid某一行的顏色、高度,以及某個單元格的顏色、單元格字體的顏色,自然就必需取到datagrid的一行和一行的單元格,網上也是搜索了好久才找到,記錄下來便于使用。

 

1、前臺WPF界面添加一個DataGrid控件,并添加兩列(便于編寫,達到目的即可)

<DataGrid AutoGenerateColumns="False" Height="642" HorizontalAlignment="Left" Margin="131,57,0,0" Name="dataGrid1" VerticalAlignment="Top" Width="799" CanUserAddRows="True" LoadingRow="dataGrid1_LoadingRow" GridLinesVisibility="None">            <DataGrid.ColumnHeaderStyle >                <Style TargetType="DataGridColumnHeader">                    <Setter PRoperty="Height" Value="50"></Setter>                </Style>            </DataGrid.ColumnHeaderStyle>            <DataGrid.Columns>                <DataGridTextColumn Header="id" Binding="{Binding Path=id}" ElementStyle="{StaticResource dgCell}"></DataGridTextColumn>                <DataGridTextColumn Header="name" Binding="{Binding Path=name}" ElementStyle="{StaticResource dgCell}"></DataGridTextColumn>            </DataGrid.Columns>        </DataGrid>
View Code

 

2、創建一個數據源并綁定,此處是創建一個datatable

DataTable dt = new DataTable();            dt.Columns.Add(new DataColumn("id", typeof(int)));            dt.Columns.Add(new DataColumn("name", typeof(string)));            for (int i = 0; i < 6; i++)            {                DataRow dr = dt.NewRow();                if (i == 3)                {                    dr["id"] = DBNull.Value;                    dr["name"] = DBNull .Value ;                    dt.Rows.Add(dr);                }                else                {                    dr["id"] = i;                    dr["name"] = "tom" + i.ToString();                    dt.Rows.Add(dr);                }            }            this.dataGrid1.CanUserAddRows = false;            this.dataGrid1.ItemsSource = dt.DefaultView;
View Code

 

3、獲取單行

for (int i = 0; i < this.dataGrid1.Items.Count; i++)            {                DataRowView drv = dataGrid1.Items[i] as DataRowView;                DataGridRow row = (DataGridRow)this.dataGrid1.ItemContainerGenerator.ContainerFromIndex(i);                if (i == 2)                {                    row.Height = 50;                    row.Background = new SolidColorBrush(Colors.Blue);                    drv["id"] = 333;                }                if (drv["id"] == DBNull.Value)                {                    row.Background = new SolidColorBrush(Colors.Green);                    row.Height = 8;                }            }

 

4、獲取單元格

for (int i = 0; i < this.dataGrid1.Items.Count; i++)            {                DataRowView drv = dataGrid1.Items[i] as DataRowView;                DataGridRow row = (DataGridRow)this.dataGrid1.ItemContainerGenerator.ContainerFromIndex(i);
         
if (i == 4) { DataGridCellsPresenter presenter = GetVisualChild<DataGridCellsPresenter>(row); DataGridCell cell = (DataGridCell)presenter.ItemContainerGenerator.ContainerFromIndex(1); cell.Background = new SolidColorBrush(Colors.Red); } }

public static T GetVisualChild<T>(Visual parent) where T : Visual { T childContent = default(T); int numVisuals = VisualTreeHelper.GetChildrenCount(parent); for (int i = 0; i < numVisuals; i++) { Visual v = (Visual)VisualTreeHelper.GetChild(parent, i); childContent = v as T; if (childContent == null) { childContent = GetVisualChild<T>(v); } if (childContent != null) { break; } } return childContent; }

 

5、如果在項目中把創建數據源、綁定數據源、對datagrid進行操作(改變行的顏色、高度)都寫在一個事件中,其中在取datagrid的row時出現錯誤:未將對象引用設置到對象的實例。

解決的方法:

   //創建數據源、綁定數據源

if (!Window.GetWindow(dataGrid1).IsVisible) { Window.GetWindow(dataGrid1).Show(); } dataGrid1.UpdateLayout();

//可以獲取某一行、某一行的單元格

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 午夜视频福利 | 久久91精品 | av资源在线 | 国产精品久久久久久久久久东京 | 羞羞草视频 | 美女视频免费一区二区 | 亚洲一级成人 | 久久综合九色综合久久久精品综合 | 日本一区免费看 | 精品亚洲午夜久久久久91 | 日本高清在线免费 | 毛片电影网址 | 国产亚洲精品视频中文字幕 | 欧美视频在线一区二区三区 | 黄色试看视频 | 午夜在线小视频 | 精品国产一区二区三区久久久蜜月 | 国产精品99久久久久久久女警 | 天堂亚洲一区 | 久草视频2 | 日本精品久久久一区二区三区 | 免费毛片a线观看 | 欧美性猛交xxxxx按摩国内 | 国产精品一区网站 | 欧美日韩在线视频一区 | 日本免费不卡一区二区 | 欧美一级鲁丝片免费看 | 国产精品久久久久久模特 | 国产一区二区三区在线免费观看 | 澳门一级淫片免费视频 | 77成人影院| 国产日韩大片 | 91精品久久久久久久久网影视 | 宅男噜噜噜66一区二区 | 日本在线视频一区二区三区 | 久国久产久精永久网页 | 久久男人视频 | 一级性色| 草逼一区 | 成人午夜毛片 | 操操插插|