c# - wpf datagridcell 聚焦时进入 editmodus

标签 c# wpf xaml datagrid datagridcell

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

当我在 editmodus 中按 TAB 或 ENTER 时,下一个单元格将获得焦点。 但是下一个单元格不会自动进入 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 的最简单方法是什么?

最佳答案

我最终简单地订阅了数据网格的 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();
            }
        }
    }

关于c# - wpf datagridcell 聚焦时进入 editmodus,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36599273/

相关文章:

C# - 无法访问所有文件

c# UserControl基类继承

c# - 嵌套用户控件的 WPF、MVVM 和事件处理

c# - 使用 C# 的 SQL Server 加密/解密

c# - 找不到 MiniProfiler ProfilingActionFilter 和 ProfilingViewEngine

c# - WPF DataGrid,如何在自定义 DataGridColumn 上绑定(bind)属性

c# - ImageBox插入没有路径的图像

c# - 列表框延伸到页面之外

c# - Thread.Sleep(2500) 与 Task.Delay(2500).Wait()

wpf - 更改 WPF 标题栏背景颜色