2016-04-13 37 views
2

1 düzenlenebilir sütun ve 1 salt okunur sütun içeren basit bir DataGrid var.wpf datagridcell odaklanıldığında editmodus içinde git

editmodus'da TAB veya ENTER düğmesine bastığımda, sonraki hücre odaklanır. Ancak sonraki hücre otomatik olarak editmodus'a gitmiyor.

<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> 

bir hücreyi odaklama üzerine editmodus gitmek için en basit yolu nedir?

+1

mı? Bir hücrenin odaklandığı ve düzenlenebileceği anlamına mı geliyor? – StepUp

+0

Evet. Hücrenin bir görüntüleme şablonu (CellTemplate) ve bir düzenleme şablonu (CellEditingTemplate) vardır. Çift tıklattığınızda, hücre düzenleme moduna girer ve CellEditingTemplate etkinleştirilir. –

+0

ve iki hücrenin odaklanmasını ve aynı anda düzenlenmesini mi istiyorsunuz? – StepUp

cevap

1

Basitçe datagrid'in SelectedCellsChanged olayına abone oldum ve BeginEdit() öğesini çağırarak bitirdim.

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

Ve olay: `editmodus` Ne

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