天天看點

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]

無論是美女的歌聲,還是鬣狗的狂吠,無論是鳄魚的眼淚,還是惡狼的嚎叫,都不會使我動搖