天天看点

DataGrid 如何得到DataGridRow 和DataGridCell 对象

第一行为不可编辑

DataGridRow row = (DataGridRow)dataGrid1.ItemContainerGenerator.ContainerFromIndex(0);

if

(row == 

null

)

{

dataGrid1.UpdateLayout();

row = (DataGridRow)dataGrid1.ItemContainerGenerator.ContainerFromIndex(0);

}

row.IsEnabled = 

false

;

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;

}

//第二行第一列不可编辑

DataGridRow rowContainer = GetDataGridRow(dataGrid1, 1);

if

(rowContainer != 

null

)

{

DataGridCellsPresenter presenter = GetVisualChild<DataGridCellsPresenter>(rowContainer);

DataGridCell cell = (DataGridCell)presenter.ItemContainerGenerator.ContainerFromIndex(1);

if

(cell == 

null

)

{

dataGrid1.ScrollIntoView(rowContainer, dataGrid1.Columns[0]);

cell = (DataGridCell)presenter.ItemContainerGenerator.ContainerFromIndex(0);

}

cell.IsEnabled = 

false

;

}

以上只是个人想法和实践经验所得,如果有文字错误和语法错误,请加以指点!

QQ:247039968

emil:[email protected]

无论是美女的歌声,还是鬣狗的狂吠,无论是鳄鱼的眼泪,还是恶狼的嚎叫,都不会使我动摇