如何将焦点设置为UserControl(使其可选)?

时间:2013-03-22 18:44:57

标签: wpf user-controls focus

我需要将注意力集中在UserControl本身,而不是它的孩子 否则我无法从缓冲区实现插入。 :(
设置Focusable=True没有帮助。 谷歌和SO只讲述如何将焦点设置为UserControl孩子。

我的控件包含:
  - 带有几个按钮的工具栏绑定到相应的命令    VM
  - TextBox,它是过滤器的输入
  - DataGrid - 项目列表。

我需要将Ctrl + V命令绑定到VM。但是要处理这种手势UserControl必须集中注意力。当网格中没有项目(VM的集合为空)时,按钮被禁用,唯一可以获得焦点的元素是TextBox。但它以自己的方式处理Ctrl + V,我不想改变这种行为 因此,当我点击UserControl区域时,我需要设置焦点 我相信UserControl是它的最佳候选者 但我不知道如何让它可以选择。

1 个答案:

答案 0 :(得分:16)

整个问题在于我对控制行为的误解 这SO question清楚地表明我相信。

因此,设置UserControl.Focusable = true是不够的。要使其可以通过键盘IsTabStop导航,也必须true。要通过鼠标点击选择UC,我们应该在鼠标事件处理程序中调用Focus()。就是这样。