gpt4 book ai didi

c# - WPF:确定 MouseBinding 是单击还是双击

转载 作者:太空宇宙 更新时间:2023-11-03 13:04:33 25 4
gpt4 key购买 nike

我在我的 View 中使用鼠标绑定(bind)来监听用户的点击,如下所示:

<Path.InputBindings>
<MouseBinding Gesture="LeftDoubleClick" Command="{Binding DoubleLeftClickProj}" />
<MouseBinding Gesture="LeftClick" Command="{Binding SingleLeftClick}"/>
</Path.InputBindings>

我一次只需要一个鼠标手势。因此,如果我双击我的应用程序,我想忽略单击鼠标左键的绑定(bind)。可能就像在初始鼠标点击后等待 1-2 秒,然后决定应该调用哪个。有没有简单的方法可以做到这一点?

最佳答案

我按照以下方式让它工作(我使用 Button 对其进行了测试,您必须对其进行调整)。

  1. 使用事件处理器

    <Button MouseDoubleClick="Button_MouseDoubleClick" Click="Button_Click"></Button>
  2. 将 DataContext 存储在静态变量中

    private static object context;
    public MainWindow()
    {
    InitializeComponent();
    DataContext = new ViewModel();
    context = DataContext;
    }
  3. 改编这段代码(我主要是从https://stackoverflow.com/a/971676/4792869得到的)

    private static DispatcherTimer myClickWaitTimer =
    new DispatcherTimer(
    new TimeSpan(0, 0, 0, 1),
    DispatcherPriority.Background,
    mouseWaitTimer_Tick,
    Dispatcher.CurrentDispatcher);

    private void Button_MouseDoubleClick(object sender, MouseButtonEventArgs e)
    {
    // Stop the timer from ticking.
    myClickWaitTimer.Stop();

    ((ICommand)DataContext).Execute("DoubleLeftClickProj");
    e.Handled = true;
    }

    private void Button_Click(object sender, RoutedEventArgs e)
    {
    myClickWaitTimer.Start();
    }

    private static void mouseWaitTimer_Tick(object sender, EventArgs e)
    {
    myClickWaitTimer.Stop();

    // Handle Single Click Actions
    ((ICommand)context).Execute("SingleLeftClick");
    }

关于c# - WPF:确定 MouseBinding 是单击还是双击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31191630/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com