2016-04-13 2 views
2

У меня есть простой DataGrid, который имеет 1 редактируемую колонку и 1 столбец только для чтения.wpf datagridcell go in editmodus при фокусе

Когда я нажимаю 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 при фокусировке клетки?

+1

что 'editmodus'? Вы имеете в виду, что ячейка фокусируется и может быть отредактирована? – StepUp

+0

Да. Ячейка имеет шаблон отображения (CellTemplate) и шаблон редактирования (CellEditingTemplate). Когда вы дважды щелкаете, ячейка переходит в редактируемый modus и активируется CellEditingTemplate. –

+0

, и вы хотите, чтобы две ячейки получили фокус и могут редактироваться одновременно? – StepUp

ответ

1

В итоге я просто подписался на событие SelectedCellsChanged в datagrid и вызвал 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(); 
      } 
     } 
    } 
Смежные вопросы