1

WPFDataGridコントロールを使用していて、キーボードのフォーカスをシングルクリックで選択Cellするように設定したい。デフォルトでは、ユーザーはセルをダブルクリックして書き込みを開始する必要があります。コードを試しました。

<Style TargetType="{x:Type DataGridCell}" x:Key="DataGridCellStyle">
   <Setter Property="IsTabStop" Value="True" />
   <Setter Property="Focusable" Value="True" />    
   <Style.Triggers>
      <Trigger Property="IsKeyboardFocusWithin" Value="True">
        <Setter Property="IsEditing" Value="True" />
      </Trigger>
   </Style.Triggers>
</Style>

セルをクリックすると、に到達しEditmodeます。もう一度クリックして、そこにキーボードフォーカスを設定し、書き込みを開始する必要があります。

4

1 に答える 1

2

これが素晴らしい機能かどうかはわかりません。複数のセルを選択できない場合があります。とにかくOnCurrentCellChangedイベントを処理します

void DG1_OnCurrentCellChanged(object sender, SelectedCellsChangedEventArgs e)
{
    DataGrid dg=(Datagrid)sender;
    dg.BeginEdit();
}

BeginEdit()DataGridPreparingCellForEditイベントが発生する場合は、そのイベントを処理する必要があると思います。

private void dg_PreparingCellForEdit(object sender,  DataGridPreparingCellForEditEventArgs e)
{
TextBox tb = e.EditingElement as TextBox;
if (tb != null)
   {
       tb.Focus();
       //you can set caret position and ...
   }
}

また、BeginningEditイベントを処理できます。

于 2012-12-15T12:38:12.273 に答える