ユーザーが Alt+X を押したときに DataGridTextColumn のキャレット位置にテキストを挿入するにはどうすればよいですか?
これがデータグリッドです
<DataGrid x:Name="TheGrid" SelectionUnit="Cell" ItemsSource="{Binding Soruce}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=Value, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
</DataGrid.Columns>
</DataGrid>
独自の CellEditingTemplate と CellTemplate を作成しようとしました。しかし、そのようにすると、グリッドのタブ機能が台無しになります。次のセルを編集するには、タブを 2 回または 3 回押す必要があります。
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<TextBox Text="{Binding Path=Value, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" KeyDown="TextBox_KeyDown"></TextBox>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=Value}"></TextBlock>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
コードビハインド。キャレットの位置を知る必要があるため、テキストをデータバインドされたモデルに直接挿入することはできません。
private void TextBox_KeyDown(object sender, KeyEventArgs e)
{
//Insert text at caret position
}