我需要将注意力集中在UserControl
本身,而不是它的孩子
否则我无法从缓冲区实现插入。 :(
设置Focusable=True
没有帮助。
谷歌和SO只讲述如何将焦点设置为UserControl孩子。
我的控件包含:
- 带有几个按钮的工具栏绑定到相应的命令
VM
- TextBox,它是过滤器的输入
- DataGrid - 项目列表。
我需要将Ctrl + V命令绑定到VM。但是要处理这种手势UserControl
必须集中注意力。当网格中没有项目(VM的集合为空)时,按钮被禁用,唯一可以获得焦点的元素是TextBox
。但它以自己的方式处理Ctrl + V,我不想改变这种行为
因此,当我点击UserControl区域时,我需要设置焦点
我相信UserControl是它的最佳候选者
但我不知道如何让它可以选择。
答案 0 :(得分:16)
整个问题在于我对控制行为的误解
这SO question清楚地表明我相信。
因此,设置UserControl.Focusable = true
是不够的。要使其可以通过键盘IsTabStop
导航,也必须true
。要通过鼠标点击选择UC,我们应该在鼠标事件处理程序中调用Focus()
。就是这样。