我有一个顶级菜单项,负责在同一个窗口中刷新数据网格。我目前的控制流程是:
oMenuItem.IsEnabled = false
。IsEnabled = true
问题是用户可以点击刷新,即使它已被禁用,就像点击排队一样。当操作返回时,它继续处理剩余的“排队”点击。我期望的是:禁用菜单项时的所有点击都会被忽略,只有在启用时,才会确认点击次数。
奇怪的是,如果我只是禁用它并且从不启用它就会保持这种状态,即它被禁用.wpf,
答案 0 :(得分:1)
“调度动作”是指调用Dispatcher.BeginInvoke()还是其他某种异步操作?
无论如何,在这两种情况下,您都可以获得操作的“句柄”(DispatcherOperation或IAsyncResult),并在分派操作时将其存储为字段。完成后 - 将此字段设置为null。
在菜单项的单击事件处理程序中,选中此字段。如果它为null,则表示启动操作是安全的。如果它不为null - 立即返回并且什么也不做。
与您的问题无关但又重要的事情 - 为什么不使用命令?这样您就不需要使用事件处理和启用/禁用。当然,命令可以通过多种方式调用(例如 - 用户使用键盘从菜单中选择命令并按Enter键。不涉及鼠标点击,但应该像点击菜单项一样)。
亚历。