我需要将焦点设置为UserControl
本身,而不是其子。
否则,我无法从缓冲区实现插入。(
设置Focusable=True
没有帮助。Google和SO只告诉如何将焦点设置为UserControl子控件。
我的控件包含:
—工具栏,有多个按钮绑定到相应的命令VM
-文本框,它是过滤器
的输入- DataGrid -项目列表。
我需要绑定Ctrl+V命令到VM。但要处理这一姿态,UserControl
必须专注于内部。当网格中没有项目(VM的集合为空)时,按钮被禁用,唯一可以获得焦点的元素是TextBox
。但是它以自己的方式处理Ctrl+V,我不想改变这种行为。
因此,当我单击UserControl区域时,我需要一些东西来设置焦点。
我相信UserControl是它的最佳候选。
但是我不知道怎么让它变成可选的
整个问题在于我对控件行为的误解。
我相信这个问题清楚地说明了这一点。
因此,设置UserControl.Focusable = true
是不够的。为了使它可以通过键盘导航,IsTabStop
也必须是true
。为了使UC可以通过鼠标点击来选择,我们应该在鼠标事件处理程序中调用Focus()
。就是这样。