locked
System.Windows.Control.DataGrid 的 Mouse 单击和双击事件! RRS feed

  • 问题

  • 不知道大家注意到没有,Silverlight5推出的新功能中,通过clickCount 来处理 双击事件。

    但在DataGrid中好像不能起效。

    1)MouseLeftButtonDown 中可以检测到ClickCount ,但该事件只在DataGird  的Header 上点击时才触发。在数据行上面不会触发。

    2)MouseLeftButtonUp 可以在数据行上触发,但是e.ClickCount 始终为1 ;

    我现在想实现,双击DataGrid 的数据行时,触发一个进入编辑的动作, Silverlight 5 还是不能实现吗?还需要用老方法(用一个计时器)来实现?

    2012年11月13日 2:44

答案

  • 你好,

    >>我现在想实现,双击DataGrid 的数据行时,触发一个进入编辑的动作, Silverlight 5 还是不能实现吗?还需要用老方法(用一个计时器)来实现?

    在DataGrid的一个Cell里连续两次点击鼠标就可以对该单元格进行编辑,你可以写一个简单的例子试一下。

    如果你的意思是DataGrid的双击操作,可以通过为路由事件添加路由事件处理程序并利用ClickCount 来实现。参考代码:

     public MainPage()
            {
                InitializeComponent();
                this.DataContext = GridData.GetData();
                dataGrid1.AddHandler(DataGrid.MouseLeftButtonDownEvent, new MouseButtonEventHandler(dataGrid1_MouseLeftButtonDown), true);
            }
    
            private void dataGrid1_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
            {
                if (e.ClickCount == 2)
                {
                    MessageBox.Show("鼠标左键点击" + e.ClickCount.ToString());
                }
            }


    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    • 已标记为答案 Haixia_Xie 2012年11月19日 11:34
    2012年11月14日 7:28