Hi xyzdumpling,
有一点需要强调的是DataGrid是做不到一行所有的Cell在同时进入编辑状态的, 只能是一个Cell在编辑状态。我这里写了一个例子,是给DataGrid一个Button column, 点击按钮,当前行的第一个Cell进入编辑模式。
<DataGridTemplateColumn Width="50">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Name="btn" Click="btn_Click"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
private void btn_Click(object sender, RoutedEventArgs e)
{
Button btn = sender as Button;
DataGridRow dgr = datagrid.ItemContainerGenerator.ContainerFromItem(btn.DataContext)as DataGridRow;
if (dgr != null)
{
DataGridCellsPresenter presenter = GetVisualChild<DataGridCellsPresenter>(dgr);
DataGridCell cell = (DataGridCell)presenter.ItemContainerGenerator.ContainerFromIndex(0);
cell.IsEditing = true;
}
}
public static T GetVisualChild<T>(Visual parent) where T : Visual
{
T child = default(T);
int numVisuals = VisualTreeHelper.GetChildrenCount(parent);
for (int i = 0; i < numVisuals; i++)
{
Visual v = (Visual)VisualTreeHelper.GetChild(parent, i);
child = v as T;
if (child == null)
child = GetVisualChild<T>(v);
else
break;
}
return child;
}
Kee Poppy [MSFT]
MSDN Community Support | Feedback to us
