国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

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

2019-11-14 16:27:27
字體:
供稿:網(wǎng)友

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

 

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

<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、創(chuàng)建一個數(shù)據(jù)源并綁定,此處是創(chuàng)建一個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、如果在項目中把創(chuàng)建數(shù)據(jù)源、綁定數(shù)據(jù)源、對datagrid進(jìn)行操作(改變行的顏色、高度)都寫在一個事件中,其中在取datagrid的row時出現(xiàn)錯誤:未將對象引用設(shè)置到對象的實例。

解決的方法:

   //創(chuàng)建數(shù)據(jù)源、綁定數(shù)據(jù)源

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

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

 


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 临西县| 内江市| 封丘县| 永吉县| 泗阳县| 德清县| 察隅县| 崇义县| 大关县| 蓬莱市| 名山县| 迭部县| 永仁县| 莒南县| 南昌市| 寿光市| 彭水| 潜山县| 河北省| 乾安县| 体育| 昌乐县| 尖扎县| 湖州市| 邹城市| 三河市| 黄石市| 遂平县| 西丰县| 海盐县| 吉木乃县| 龙岩市| 原平市| 柳林县| 灵川县| 辽中县| 盈江县| 都江堰市| 尼玛县| 华容县| 内江市|