Button Click 事件被调用以保持事件

Posted

技术标签:

【中文标题】Button Click 事件被调用以保持事件【英文标题】:Button Click event is getting called for holding event 【发布时间】:2015-10-18 00:34:25 【问题描述】:

我已经为按钮的点击事件使用了命令绑定。现在我在按钮上也有一个保持事件。因此,每当我按住按钮时,单击也会与按住事件处理程序一起被调用。我试过设置

 e.handled = true;

但这不起作用。关于为什么会检测到这两个事件的任何建议。如果我使用 Tapped 事件而不是命令绑定,一切正常。但我的要求是对点击事件使用命令绑定。

编辑:下面是一些代码

代码: xml:

 Button Command=Binding ButtonClicked Holding="Button_Holding"

xaml.cs

private void Button_Holding(object sender, HoldingRoutedEventArgs e)
    
    

ViewModel 有 ButtonClicked 命令

【问题讨论】:

你指定ClickMode吗? 有很多方法可以将命令绑定到事件,这就是您应该使用Tapped 事件来做的事情 你能准确解释你想要达到的目标吗?为什么需要使用Holding 事件? 【参考方案1】:

我不是这方面的专家,但我想 Holding 是一个冒泡事件,而 ButtonClick 是一个直接事件(如果有人知道我肯定会喜欢阅读评论)

因此,您的 e.handled = true; 不适用于 ButtonClicked 事件。 我会说你必须让你的按钮点击命令知道先触发了保持事件,然后通过 CanExecute 方法或任何你命名的方法忽略该事件,或者至少执行类似

的操作
    public void YourButtonClickedMethod()
     
         if(SomeObject.IsHoldAllreadyExecuted)
         
             SomeObject.IsHoldAllreadyExecuted = false; //set it to false for the next run 
         
         else 
         
             //DO the stuff you want to
         

    

【讨论】:

以上是关于Button Click 事件被调用以保持事件的主要内容,如果未能解决你的问题,请参考以下文章

jQuery Button.click() 事件被触发两次

mousedown和click冲突事件

回车事件如何触发不同的click

为button设置click事件的几种方法

如何用C#代码触发button-click事件

WPF代码触发Button点击事件