【问题标题】:Silverlight detect wether loosing focus is because tab is pressed or mouse is clickedSilverlight 检测失去焦点是因为按下了选项卡还是单击了鼠标
【发布时间】:2011-12-27 09:39:30
【问题描述】:

silverlight 中是否有办法检测何时触发失去焦点事件,如果这 发生是因为按下了 tab 键或用户在另一个控件上按下了鼠标按钮。

这就是我想要实现的目标:

我有 1 行的 RadGridView。在最后一列我有一个数字输入,当 用户退出此控件,应将新行添加到视图模型中的 sourcecollection,这会自动将新行添加到网格,然后该行的第一列应该具有焦点,并且应该打开 celledittemplate 中的下拉列表.

当我使用失去焦点事件时,添加新行可以正常工作,尽管当我不使用选项卡取消控制焦点时这也可以。另外,新行的第一列没有被选中,它不知何故 将焦点放在第 0 行第 0 列。

【问题讨论】:

  • Thomas,您降低了我接受的解决方案点数,您如何接受自己的解决方案?我认为您应该更新问题以添加答案。

标签: c# silverlight


【解决方案1】:

好的,受 Dipak 给出的答案的启发,我想出了一个稍微不同的解决方案, 我处理了 Gridviews 的 keydown 和 keyup 事件,keydown 将 bool 设置为 true,keyup 设置为 false。

幸运的是执行顺序是keydown, lostfocus, keyup 所以在失去焦点事件中,我只需要检查 bool 是否为真; 奇怪的是,keyup 事件并不总是被触发,但由于 lostfocus 是 我在那里也将 bool 设置为 false。

【讨论】:

  • 我认为这是解决方法,但应该等到有人提出更优雅的方式。
  • 你是对的,因为我们正在创建的产品需要很快完成,我现在就这样做。
【解决方案2】:

是的,您可以跟踪它,前提是您已经在屏幕上的每个可聚焦元素上实现了鼠标向上/向下事件。您将有标志来检查是否在任何元素上发生鼠标预览事件向上/向下,如果没有,则它的 TAB 键会导致失去焦点。

如果有人不建议适当的解决方案,这是一种解决方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-22
    • 2012-04-30
    • 2019-04-22
    • 2020-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多