<DataGridTemplateColumn Header="Template" > <DataGridTemplateColumn.CellTemplate> <DataTemplate> <TextBlock Text="{Binding xxx}"/> </DataTemplate> </DataGridTemplateColumn.CellTemplate> <DataGridTemplateColumn.CellEditingTemplate> <DataTemplate> <TextBox x:Name="tbxxx" Text="{Binding xxx}" FocusManager.FocusedElement="{Binding RelativeSource={RelativeSource Self}}"></TextBox> </DataTemplate> </DataGridTemplateColumn.CellEditingTemplate> </DataGridTemplateColumn>
1: TextBox 自动获取焦点
<TextBox FocusManager.FocusedElement="{Binding RelativeSource={RelativeSource Self}}"></TextBox>
2:TextBox获取焦点全选文本 :https://www.cnblogs.com/akiing/p/9717270.html
WPF使用DataGrid 时,如果使用 DataGridTextColumn 列,进入编辑模式,点击后会直接将文本框全选。
但是如果使用 DataGridTemplateColumn 列时,DataTemplate 下绑定 TextBox,进入编辑模式并不会全选。
如果在模板列中的TextBox使用1方式,能使控件获取焦点(让鼠标进入TextBox)但是不会触发任何事件,比如 GotFocus 、GotKeyboardFocus等
如果在模板列中的TextBox使用2方式,能使控件在获取焦点时全选,但是相比较DataGrid的DataGridTextColumn 方式,需要多点击一次。
另外在DataGrid 控件的 BeginningEdit 、CellEditEnding 事件中获取不到 CellEditingTemplate 模板中的控件 TextBox.。
做个记录,继续寻找解决方案中...