이 솔루션은 다른 두 솔루션의 혼합입니다. 나는 양쪽 모두에게 받아 들인 해결책을 줄 수는 없다. 미안하다.
두 이벤트 (클릭 및 이중 클릭) 대신에 PreviewMouseLeftButtonDown을 사용하여 단일 클릭 또는 두 번 클릭이 작동하는시기를 제어하는 경우
그래서 나는이 코드를 사용하여 문제를 해결 :
이 첫 번째 방법은 마우스로 클릭을 제어 할 수 있습니다.
private void MouseLeftButtonDownCommand(MouseButtonEventArgs e)
{
if (e.ClickCount == 1)
{
_dtMouseClick.Start();
}
else if(e.ClickCount > 1)
{
_dtMouseClick.Stop();
//the code of the double click
}
}
이 메소드는 DispatcherTimer에 링크되는 메소드로 두 번째 클릭으로 중지되지 않으면 실행됩니다.
private void MouseClick_Tick(object sender, System.EventArgs e)
{
_dtrMouseClick.Stop();
//code of the single click
}
dispatcherTimer는 뷰 모델
_dtBotonBuscarMouseClick =
new System.Windows.Threading.DispatcherTimer(
new TimeSpan(0, 0, 0, 0, 250),
System.Windows.Threading.DispatcherPriority.Background,
MouseClick_Tick,
System.Windows.Threading.Dispatcher.CurrentDispatcher);
_dtMouseClick.Stop();
간격은 사용자가 두 번 클릭해야하는 시간 간격이입니다은 250ms이다의 생성자에서 만드는 것입니다.
이 솔루션에서는 dispatcherTimer, stop() 메서드를 중지하는 데 같은 방법을 사용하지만 두 가지 이벤트 (click 및 mouseDoubleClick)를 사용하면 어떤 이유로 DispatcherTimer가 두 번 클릭으로 중지되지 않고 if 솔루션이 작동하는 MouseLeftButtonDown 이벤트를 사용합니다.
버튼에 'OnMouseDoubleClick' 이벤트가 없습니까? –
예 내 버튼에는 클릭 이벤트와 마우스 두 번 클릭 이벤트의 두 가지 이벤트가 있습니다. –
그래서'OnMouseDoubleClick' 이벤트에서 실행하고자하는 코드를 작성하지 않으시겠습니까? –