寻找Silverlight 3或4菜单控件,提供良好的键盘支持

时间:2010-04-12 20:16:08

标签: silverlight

我为客户端使用Silverlight的N-Tier应用程序。客户作为一个特定的要求 - 我认为这是非常合理的:所有操作 - 包括菜单导航 - 都必须通过键盘提供。
当我尝试Silverlight 4时,我很惊讶没有找到任何菜单控件,所以我下载了几个开源和商业菜单控件。我非常失望,经过几个小时的搜索,我找不到任何能提供合适键盘支持的控件。大多数控件不提供支持或一些基本支持,但没有一个控件启用通过键盘获得对第一项的关注。您可以使用键盘(箭头键),但您需要先选择用鼠标控制!没有一个控件提供对键盘快捷键的支持。

有没有人知道任何提供下降支持的Silverlight控件?

2 个答案:

答案 0 :(得分:2)

我个人很高兴不包含内置菜单控件。我并不是说你的应用程序确实需要一个,但至少它强迫你去思考它,如果你可以提供没有你想要的功能而且这是一件好事。

您正在寻找的是<Alt>+F等菜单访问键。现在有了这样的事情,为了能够很好地工作,API必须支持页面范围的keypreview事件,允许截获所需的键组合,尽管控件具有焦点。

Silverlight不提供此类事件。您可以做的最好的事情是UserControl上的KeyDown或KeyUp事件。您可以将其设置为制表位,以便即使UI中没有可以获得焦点的其他控件也可以获得焦点。

但是,将KeyDown或KeyUp事件标记为已处理的任何控件都将阻止UserControl接收该事件,从而使Menu对此类直接键盘访问的响应显得不完整且不一致。这将被大多数用户解释为错误。

我怀疑由于这个原因,菜单控件的供应商不提供此功能,以便他们的声誉不会受到平台实际限制的影响。

最重要的是,如果您必须具备此功能,则可以使用KeyUp或KeyDown事件处理来合理地提供此功能,但您需要严格测试UI以查看是否存在无法正常工作的情况。

答案 1 :(得分:0)

此菜单提供了相当不错的解决方案:

http://sl4popupmenu.codeplex.com/

由于浏览器的限制,键盘修改器的选择大多局限于Ctrl + Alt。