wpf datagrid怎么得到焦点?用datagrid.focus()不行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了wpf datagrid怎么得到焦点?用datagrid.focus()不行相关的知识,希望对你有一定的参考价值。

如果用鼠标点WPF上的一个DataGrid控件,然后用键盘UP、Down方向键上下移动,则当前行也上下移动,但是如果用datagrid.focus()方法都焦点设置到datagrid控件,那么就不会出现上面的效果,请问这是怎么回事呢?

参考技术A 你得让里面行获得焦点
比如第一行:

var row = dataGrid.ItemsContainerGenerator.ContainerFromIndex(0) as FrameworkElement;
if(row != null)
row.Focus();追问

这样不行,得不到焦点

追答

调整到Input优先级呢?

row.Dispatcher.BeginInvoke(new Action(() => row.Focus()));

追问

还是不行

追答

你看看你的row到底是不是null?
我这边试了是可以的,唯一的问题就是没有高亮,加上selectedindex = 0就行了

对了,应该是dataGrid.ItemContainerGenerator,原来多写多了一个s

追问

这个之前就试过了,只是得到高亮显示,并没有获得焦点

追答

你按上下键不能动?给个邮箱,我发工程给你

另外,如果你的意思是要Cell那个粗框的效果,再找到Cell Focus就行了

追问

只要datagrid得到焦点,上下键就能动了,现在就是获取不到焦点,发给我吧,443936190@qq.com 非常感谢

追答

已发

本回答被提问者采纳

WPF DataGrid怎么实现多行选中,不能使用CheckBox

参考技术A   WPF DataGrid怎么实现多行选中,不能使用CheckBox:
  SingleSelect:false,即可实现选择多行。

  【解析】
  原因分析:
  datagrid 中的 idField 属性,必须对应后台的实体属性字段,而且该字段必须确保唯一性,一般用id标识,否则就无法获取在datagrid中选择的多条记录。
  DataGrid组件包括2个方法检索选择行数据:
· getSelected: 得到第一个选择行的数据,如果没有选择行则返回null否则返回该记录。
· getSelections:得到全部的选择行的数据,如果元素是记录的话,返回数组数据。本回答被提问者采纳

以上是关于wpf datagrid怎么得到焦点?用datagrid.focus()不行的主要内容,如果未能解决你的问题,请参考以下文章

WPF怎么让datagrid的某个cell下的模板控比如textBox,获取焦点?要光标一闪一闪的效果,便于用户输入

wpf datagrid cell 设置焦点

WPF Datagrid行上下文菜单-禁用菜单项[关闭]

当 Datagrid 失去焦点时,WPF DataGridRow 自定义样式被解除

WPF DataGrid怎么实现多行选中,不能使用CheckBox

在不丢失单元格焦点的情况下刷新 WPF DataGrid