如何在代码中将Silverlight 3 DataGridCell置于编辑模式?

ssg*_*926 6 silverlight datagrid silverlight-3.0

我希望能够在Silverlight 3.0 DataGrid中选择一个特定的单元格并将其置于编辑模式.我可以使用VisualTreeManager来定位单元格.如何切换到编辑模式?

每个DataGridCell在VisualTreeManager中都是这样的:

          System.Windows.Controls.DataGridCell
            System.Windows.Controls.Grid
              System.Windows.Shapes.Rectangle
              System.Windows.Controls.ContentPresenter
                System.Windows.Controls.TextBlock
              System.Windows.Shapes.Rectangle
              System.Windows.Shapes.Rectangle
Run Code Online (Sandbox Code Playgroud)

使用包含我要编辑的文本的TextBlock.

更新

按照@AnthonyWJones的建议,这是我尝试使用BeginEdit()的方法.

我想保持简单,所以我想我会在第一行选择一列.即使这证明超出了我的SL知识!最后,我通过创建一个名为firstRow的字段来保存第一行:

private DataGridRow firstRow;
Run Code Online (Sandbox Code Playgroud)

向DataGrid添加了一个LoadingRow处理程序:

LoadingRow="computersDataGrid_LoadingRow"
Run Code Online (Sandbox Code Playgroud)

private void computersDataGrid_LoadingRow(object sender, DataGridRowEventArgs e)
{
    if (this.firstRow == null)
        this.firstRow = e.Row;
}
Run Code Online (Sandbox Code Playgroud)

然后向面板添加一个按钮以触发编辑:

private void Button_Click(object sender, RoutedEventArgs e)
{
    this.dataGrid.SelectedItem = this.firstRow;
    this.dataGrid.CurrentColumn = this.dataGrid.Columns[4];
    this.dataGrid.BeginEdit();
}
Run Code Online (Sandbox Code Playgroud)

我单击按钮并选择了正确的单元格,但它不会在单元格上进行编辑.需要手动点击才能实现这一目标.

Ant*_*nes 2

我不确定为什么您需要使用 VisualTreeManager 查找 DataGridCell,也不知道当前如何正确开始编辑 . 您只需将单元格的视觉状态设置为编辑即可。

 VisualStateManager.GoToState(myDataGridCell, "Editing", true);
Run Code Online (Sandbox Code Playgroud)

我不确定当您执行上述操作时网格的行为如何。如果您需要 DataGrid 来帮助您恢复对行的更改,您可能会发现事情变得有点梨形。

“标准”方法是将DataGrid SelectedItem属性设置为由行表示的项目,将CurrrentColum属性设置为DataGridColumn表示在其中找到单元格的列的对象。然后调用该BeginEdit方法。