![]() |
1
0
也许应该在第一次单击之后禁用该按钮,直到处理完成? |
![]() |
2
16
Vidalsason提交的这个问题的经检查的答案是错误的,并且这个问题的所有方法都是错误的。 任何包含需要大量处理时间的代码的事件处理程序都可能导致延迟禁用有问题的按钮;无论在处理程序中调用禁用代码行的位置如何。 尝试下面的证明,您将看到禁用/启用与事件注册没有关联。Button Click事件仍在注册中,并且仍在处理中。 矛盾证明1
相反证明2
|
![]() |
3
10
简单有效地阻止双击、三次和四次单击
|
![]() |
4
9
我也有同样的问题,这对我很有效:
|
![]() |
5
5
我们是这样解决的…使用Async,我们找不到任何其他方法来有效阻止调用此单击的按钮上的额外单击:
|
![]() |
6
4
假设wpf命令没有给您足够的控制权来处理click处理程序,您可以在命令处理程序中放置一些代码来记住上次执行命令的时间,如果在给定的时间段内请求该命令,您可以将其退出吗?(下面的代码示例) 其思想是,如果双击,您将在毫秒内收到事件两次,因此忽略第二个事件。 比如:(在命令里面)
(注意:如果它只是一个普通的老点击处理程序,我会说遵循以下建议: http://blogs.msdn.com/oldnewthing/archive/2009/04/29/9574643.aspx ) |
![]() |
7
4
你可以使用
处理Click事件并发送给
这将在处理命令期间禁用按钮。 |
![]() |
8
4
你会认为这就像使用
我怀疑如果这个命令引用了窗口的
我可以想出一些方法来解决这个问题。一个人的方法:简单地跟踪
一个更强大的方法可能是
|
![]() |
9
3
你可以设置一个标志
|
![]() |
10
2
一个简单而优雅的解决方案是在双击场景中创建一个在第二次单击时禁用行为的反应。这很容易使用:
行为(有关行为的详细信息- https://www.jayway.com/2013/03/20/behaviors-in-wpf-introduction/ )
|
![]() |
11
0
如果控件派生自System.Windows.Forms.Control,则可以使用 double click event . 如果它不是从System.Windows.Forms.Control派生的,则 wire up mousedown 相反,确认单击计数==2:
|
![]() |
12
0
有同样的问题,通过使用附加行为解决了它。
然后直接在XAML中通过声明样式将属性设置为true,这样它就可以同时影响所有按钮。(不要忘记XAML命名空间声明)
|
![]() |
13
0
我正在使用xamarin和mvmcross,虽然不是wpf,但我认为以下解决方案适用,我创建了一个特定于viewModel(不处理特定于平台的UI)的解决方案,我认为这非常方便,使用viewModel的助手或基类创建一个跟踪命令的列表,如下所示:
在操作中添加如下命令:
Try/Finally只是确保命令始终完成。 通过设置动作异步并进行延迟测试,第一个tap工作,第二个tap返回条件。 |
![]() |
14
0
在try catch finally或try finally块中包装代码。无论try中发生什么错误,都将始终调用finally语句。 例子
注意:CursorType是用户控件或窗口绑定到的属性
|
![]() |
15
-2
这将检查验证是否通过,如果通过,则禁用该按钮。
|