码迷,mamicode.com
首页 > Windows程序 > 详细

禁用WPF中DataGrid默认的鼠标左键拖动多选行的效果

时间:2015-11-12 13:44:43      阅读:399      评论:0      收藏:0      [点我收藏+]

标签:wpf   datagrid   拖拽   多选   

 最近项目上有需求要做DataGrid的行的拖拽功能, 有个很现实的问题就是鼠标左键按下是拖拽还是多选。
查看了DataGrid的源码发现,系统内部会在鼠标按下的时候CaptureMouse,然后设置私有变量来保存多选标志, 在鼠标MouseMove的时候根据变量判断是否多选。

 private bool _isDraggingSelection;                                  // Whether a drag select is being performed


分析清楚了, 解决就好办了。我们只有在DataGrid的PreviewMouseMove里利用反射拿到这个私有变量,设置为false即可。


        private void DisableRowDraggingSelection( DataGrid dataGrid )
        {
            //Set _isDraggingSelection and disable system native drag selection feature.
            var property typeof ( DataGrid ).GetField (
                                                      "_isDraggingSelection" ,
                                                      BindingFlags .Instance BindingFlags. NonPublic BindingFlags . IgnoreCase);
            if (property != null)
            {
                property .SetValue ( dataGridfalse );
            }
        }



版权声明:本文为博主原创文章,欢迎转载,仅请署名

禁用WPF中DataGrid默认的鼠标左键拖动多选行的效果

标签:wpf   datagrid   拖拽   多选   

原文地址:http://blog.csdn.net/muzizongheng/article/details/49796655

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!