Silverlight:我如何确定我的控件如何获得焦点?

时间:2011-03-17 20:16:40

标签: silverlight

具体来说,我想知道控件是否得到了焦点,因为用户选中了它或者是因为用户点击了它。

2 个答案:

答案 0 :(得分:4)

我正在考虑这件事。虽然我没有给你一个大胆的答案,但我正在考虑一些方法来做到这一点。如你所知,问题是KeyDown和MouseLeftButton事件发生在GotFocus之后。在GotFocus事件期间,我也找不到检查鼠标和键盘状态的方法。

您可以添加新的TabFocus和ClickFocus事件,并在点击或标签事件中将其关闭。

在你的gotFocus事件上,在userControl上设置一个标志。

justGotFocus = true;

添加活动 公共事件TabFocus,ClickFocus(元代码)

然后在鼠标和键事件中,你

TabFocus(this,new EventArgs())

ClickFocus(this,new EventArgs())

或只使用FocusType参数调用中心函数

公共事件SpecificFocusEvent SpecificFocus(this,FocusType.TabKey)

抱歉......累了......可怕的代码= P

您可以将上述内容放入附加属性中以便重复使用。

OR 我还没找到一个标志= P

PJ

修改

你走在正确的轨道上,只是有点乱。在MouseDown事件上设置标志,使用GotFocus读取它,并在MouseUp / GotFocus / LostFocus中清除它。这很难看,但它通常都有效。

答案 1 :(得分:0)

通过Control,你的意思是UserControl吗?

但是,当一个(输入)控件(如UserControl上的TextBox)获得焦点时,会引发UserControl的事件GotFocus。

UserControl本身无法获得焦点(通过单击UserControl的背景)。