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