Silverlight 中没有鼠标双击事件. 但是用 System.Windows.Threading.DispatcherTimer 可以模拟鼠标双击事件.

代码如下: 
Xaml:
 1<UserControl x:Class="DoubleClick.MainPage"
 2    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
 3    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
 4    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
 5    mc:Ignorable="d" d:DesignWidth="640" d:DesignHeight="480">
 6    <Grid x:Name="LayoutRoot">
 7        <Button Width="100" Height="40" Content="Double Click Me" Click="Button_Click" />
 8    </Grid>
 9</UserControl>
10

C#:
 1 using System;
 2 using System.Windows;
 3 using System.Windows.Controls;
 4 using System.Windows.Threading;
 5 
 6 namespace DoubleClick
 7 {
 8     public partial class MainPage : UserControl
 9     {
10         private DispatcherTimer _doubleClickTimer;
11 
12         public MainPage()
13         {
14             InitializeComponent();
15 
16             _doubleClickTimer = new DispatcherTimer() { Interval = new TimeSpan(0000200) };
17             _doubleClickTimer.Tick += new EventHandler(_doubleClickTimer_Tick);
18             _doubleClickTimer.Start();
19         }
20 
21         void _doubleClickTimer_Tick(object sender, EventArgs e)
22         {
23             _doubleClickTimer.Stop();
24         }
25 
26         private void Button_Click(object sender, RoutedEventArgs e)
27         {
28             if (_doubleClickTimer.IsEnabled)
29             {
30                 // 双击了
31                 _doubleClickTimer.Stop();
32                 MessageBox.Show("Double Click Button");
33             }
34             else
35             {
36                 // 没双击
37                 _doubleClickTimer.Start();
38             }
39         }
40     }
41 }
42 
posted on 2009-09-26 10:40  Hacker-TTAO  阅读(713)  评论(0编辑  收藏  举报