【问题标题】:Avoid second click in silverlight button MVVM避免第二次点击 silverlight 按钮 MVVM
【发布时间】:2012-10-22 09:23:09
【问题描述】:

我发现有几个用户在使用双击按钮时遇到了问题。

我有几个按钮绑定到启动许多操作的命令。

例如,有两个窗口通过调解器在它们之间进行通信,因此当我单击“关闭另一个窗口”时,绑定命令会发送“CloseTheOtherWindowMessage”。问题是,当用户双击时,它会再次尝试关闭窗口,但正如预期的那样,它会崩溃。

当我按下按钮时,我尝试将窗口 BusyIndi​​cator 设置为 IsBusy,但我的手指比 MVVM 快,它仍然让我在开始显示 BusyIndi​​cator 之前双击。

我找到了许多关于如何使用interaction.Behaviors 只允许在MVVM 中双击的示例,但我想要的恰恰相反。这个问题有什么例子或其他好的通用解决方案吗?

【问题讨论】:

    标签: silverlight mvvm double-click


    【解决方案1】:
    1. 为什么当它崩溃时“如预期”?崩溃绝不应该“如预期”发生。

    2. 您的手指不应“比 MVVM 快”。 Dispatcher 线程始终以确定性和顺序的方式运行。您使用多线程方法吗?

    3. 在命令的Execute 方法或处理程序中,引发其CanExecuteChanged 事件,绑定引擎将立即调用CanExecute(...)。使该方法第二次返回false。也许使用计时器,或者更好的是,您可以仅通过您的视图模型状态在逻辑上确定该操作现在是不可能的(即因为 IsOtherStuffAvailable 当前是 false)。

    【讨论】:

    • 1.这是“预期的”,因为当第二个“关闭”到达时,窗口已经关闭。 2. 我和你一样惊讶。事实上,如果我设置了一个断点,它工作得很好(BusyIndi​​cator 启动,我不能第二次单击该按钮)。 3. 这是我想到的唯一选择,但我不想用这个问题更改我的所有应用程序按钮(这是一个巨大的应用程序,我正在寻找更通用的东西,如果它存在的话)。感谢您的回答!
    猜你喜欢
    • 1970-01-01
    • 2013-05-08
    • 2017-05-23
    • 2018-03-26
    • 2015-09-05
    • 1970-01-01
    • 2021-08-02
    • 2012-10-24
    • 1970-01-01
    相关资源
    最近更新 更多