2016-04-13 11 views
2

Ich habe eine einfache DataGrid, die 1 editierbare Spalte und 1 readonly Spalte hat.wpf datagridcell gehe in editmodus wenn fokussiert

Wenn ich TAB oder ENTER in editmodus drücke, wird die nächste Zelle fokussiert. Aber die nächste Zelle geht nicht automatisch in 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> 

Was ist der einfachste Weg, in editmodus gehen auf eine Zelle konzentriert?

+1

was 'editmodus'? Meinst du, dass eine Zelle fokussiert wird und bearbeitet werden kann? – StepUp

+0

Ja. Die Zelle verfügt über eine Anzeigevorlage (CellTemplate) und eine Bearbeitungsvorlage (CellEditingTemplate). Wenn Sie doppelklicken, wechselt die Zelle in den Bearbeitungsmodus und CellEditingTemplate wird aktiviert. –

+0

und möchten, dass zwei Zellen einen Fokus erhalten und gleichzeitig bearbeitet werden können? – StepUp

Antwort

1

Ich endete einfach Abonnement SelectedCellsChanged Ereignis des Datagrid und Aufruf BeginEdit().

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

Und das Ereignis:

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(); 
      } 
     } 
    } 
Verwandte Themen