wpf datagridcell 聚焦时进入 editmodus
wpf datagridcell go in editmodus when focussed
我有一个简单的 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();
}
}
}
我有一个简单的 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();
}
}
}