WPF 双击事件的判断


 

MVVM绑定双击事件:

cal:Message.Attach="[Event MouseDoubleClick] = [Action AddSingleFileAction1($this)];"

 

WPF 双击事件:

摘自:http://www.cnblogs.com/xiwang/archive/2012/06/29/2570398.html

由于WPF中没有鼠标的双击事件,因而只能通过MouseDown事件来模拟。当连续的两次MouseDown事件的时间间隔,没有超过一个设定的时间阈值时,就计算为一个双击事件,并作相应的处理。利用WPF中System.Windows.Threading.DispatcherTimer来做定时处理,不建议使用System.Timers.Timer。当定时事件发生时,就重置计数器为0,定时,单击事件中对计数器加1,并计数器是否为2的整数倍(即是否在设定的时间间隔内,发生两次MouseDown 事件)。如果是则作为双击事件处理

int i = 0;

private void Grid_MainTitle_MouseDown(object sender,

MouseButtonEventArgs e)

{

     i+=1;

     DispatcherTimer timer = new DispatcherTimer();

     timer.Interval = new TimeSpan(0, 0, 0, 0, 300);

     timer.Tick += (s, e1) => { timer.IsEnabled = false; i = 0; };

     timer.IsEnabled = true;

     if (i % 2 == 0)

     {

         timer.IsEnabled = false;

         i = 0;

         this.WindowState = this.WindowState == WindowState.Maximized ?

                       WindowState.Normal : WindowState.Maximized;

     }

}

评论补充:

何必这么麻烦?
在mousedown的事件里直接判断
if(e.ClickCount == 2)
{
 //双击时执行
}

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM