9

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

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

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

4

1 回答 1

24

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

因此,设置UserControl.Focusable = true是不够的。为了使它可以通过键盘导航也IsTabStop必须是true。为了使 UC 可以通过鼠标单击选择,我们应该调用Focus()鼠标事件处理程序。而已。

于 2013-03-26T08:01:04.003 回答