我有一个WPF按钮,其内容包含一系列控件,包括CheckBox。
目前单击CheckBox会触发“Checked”事件,没关系。
我不喜欢的是Double-Click也会触发“Checked”事件。
目前,Double-Click会触发CheckBox的“Checked”事件和Button的“DoubleClicked”事件。
我想要的是双击CheckBox应该只触发Button的事件,而不是CheckBox的事件。只应在单击时检查CheckBox。
有办法吗?
感谢。
答案 0 :(得分:1)
您尝试做的事情可能无法获得最佳用户体验,因为在处理用户尝试选中此框之前,您必须实施延迟。
为什么?
好吧,如果你双击复选框,你不希望复选框发生任何事情,你只想将控制权传递给按钮。这完全可以理解。
但是如果你只是点击复选框会发生什么?在您释放鼠标按钮的那一刻,您将看到出现复选标记。但系统还不知道您不打算再次点击。因此,它必须等待DoubleClickTime以确定您实际上从未双击过。
你必须权衡哪个更糟:双击复选框时勾选复选框与闪烁的延迟。
如果您决定延迟,您需要自己实施。这是一个应该有效的基本程序:
_hasDoubleClicked
设置为true。_hasDoubleClicked
为false,则切换复选框的IsChecked
。另外,设置_hasDoubleClick = false
。正如你所看到的,这并不漂亮。您可能想问自己是否有其他方法可以通过不同的设计实现您的目标。您是否需要首先使用双击?