【发布时间】:2016-06-08 13:33:46
【问题描述】:
当用户按下 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。但是当我这样做时,它会破坏网格的 Tab 功能。我必须使用双重或三重制表符来编辑下一个单元格。
<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
}
【问题讨论】:
标签: c# wpf datagrid datagridtextcolumn