关于WPF的DataGrid控件在使用过程中的遇到的问题及解决方法的记录

最近的项目用到了DataGrid控件,做个笔记,记录一下开发过程中遇到的问题:

1.DataGrid的ItemSource的绑定最好使用ObservableCollection<>集合类型,能够自动更新数据到前台。

2.DataGrid自带键盘导航上下左右键切换选中单元格或行的功能。但是,如果绑定了SelectedIndex(selectedItem等)属性,并且Mode=Twoway,就会导致上下左右键失效。如果绑定成Mode=Oneway,就不会失效。也就是说,前台不能通过绑定把数据传到后台。至于如果真这么做,怎么把SelectedIndex值传到后台,就另想办法(我是使用SelectedChanged事件把Index传到后台)。

3.通过SelectedIndex改变选中的行(不是通过鼠标点击)后,按下上或下键后,DataGrid会选中SelectedIndex改变之前的那行的+1或-1行,而不是选中SelectedIndex改变之后的那行的+1或-1行。原因是dataGrid的CurrentItem属性还是SelectedIndex改变之前的值呢,所以需要更新一下CurrentItem属性。也可以直接设置datagrid.CurrentItem = datagrid.SelectedItem.

4.关于当行数较多时,希望把某一行显示到可视范围内,即自动拉动滚动条的方法:dataGrid.ScrollIntoView();改变之前需要先更新一下DataGrid:dataGrid.UpdateLayout(); 这个网上好多方法;

但是,如果DataGrid控件没有显示出来(例如在未显示的Tab页中),移动滚动条后,只会显示到最顶端或最底端。

5.如果想屏蔽到DataGrid自带的某些快捷键,可以使用:

例如:

<DataGrid.InputBindings>

            <KeyBinding Gesture="Delete" Command="ApplicationCommands.NotACommand"/>

</DataGrid.InputBindings>

6.绑定的属性可以绑定到样式里,包括DataGrid的行、列和单元格样式等,即使是单独的一个样式文件。

 

如果有哪里不正确,欢迎各位大神指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值