2

我有一个简单DataGrid的有 1 个可编辑列和 1 个只读列。

当我在 中按 TAB 或 ENTER 时editmodus,下一个单元格被聚焦。但下一个单元格不会自动进入editmodus.

<DataGrid Name="DataGridMain" AutoGenerateColumns="False" SelectionUnit="Cell" SelectionMode="Single">
    <DataGrid.Columns>

        <DataGridTemplateColumn Header="Code">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding Code}"/>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
            <DataGridTemplateColumn.CellStyle>
                <Style TargetType="DataGridCell">
                    <Setter Property="IsTabStop" Value="False"/>
                </Style>
            </DataGridTemplateColumn.CellStyle>
        </DataGridTemplateColumn>

        <DataGridTemplateColumn Header="Description">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding Description}"/>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
            <DataGridTemplateColumn.CellEditingTemplate>
                <DataTemplate>
                    <TextBox Text="{Binding Description}" Background="LightGray"/>
                </DataTemplate>
            </DataGridTemplateColumn.CellEditingTemplate>
        </DataGridTemplateColumn>

    </DataGrid.Columns>
</DataGrid>

editmodus聚焦细胞最简单的方法是什么?

4

1 回答 1

1

我最终只是订阅了数据网格的 SelectedCellsChanged 事件,并调用 BeginEdit()。

<DataGrid Name="DataGridMain" SelectedCellsChanged="GridMainElements_SelectedCellsChanged" AutoGenerateColumns="False" SelectionUnit="Cell" SelectionMode="Single" >
    ...
</DataGrid>

和事件:

private void GridMainElements_SelectedCellsChanged(object sender, SelectedCellsChangedEventArgs e)
    {
        Debug.WriteLine("Selected cells changed");

        if(e != null && e.AddedCells != null && e.AddedCells.Count == 1)
        {
            DataGridCellInfo selectedCell = e.AddedCells[0];

            if(selectedCell.Column == ColumnFormula || selectedCell.Column == ColumnNote)
            {
                GridMainElements.BeginEdit();
            }
        }
    }
于 2016-04-14T11:26:29.917 回答