首先:我知道有数以千计的答案如下:"为Keyboard.KeyDownEvent
添加处理程序并享受乐趣!"。但在我的情况下,这不起作用。
我有一个自定义控件CustomControl
,它源自Canvas
但没有Children
。相反,它吸引了他们的孩子"直接转到DrawingContext
中的OnRender
。我的控件是HitTestVisible,它是制表位但不可调焦。它经常被重复使用,有时在ScrollViewer
中。
此CustomControl
有一个自定义实现,用于选择文本等内容,并应将选定的文本复制到 Ctrl + C 上的ClipBoard。
为此,我在构造函数中添加了一个处理程序:
public CustomControl()
{
//// ... other stuff
AddHandler(Keyboard.KeyDownEvent, (KeyEventHandler)CopyMarkedNucleotidesToClipboard);
}
以下是问题:当我的控件位于ScrollViewer
内,并且我点击 Ctrl + C 时,会引发KeyDownEvent
在ScrollViewer
和气泡到窗口,因此永远不会到达我的控制。
在CustomControl
内我可以在其所在的窗口中捕获每个 Ctrl + C 吗?
PS:我已设置IsTabStop="False"
和Focusable="False"
。但是,ScrollViewer
的下一个兄弟会引发事件,这个事件仍会冒泡到窗口。而且我不想浏览视觉树中较高的所有控件,并将IsTabStop="False"
和Focusable="False"
设置为错误...
我已经找到了这篇文章http://blogs.msdn.com/b/toub/archive/2006/05/03/589423.aspx,但我认为,必须有一种更像wpf的方式!
答案 0 :(得分:0)
Sinatr的建议是正确的!谢谢!
解决方案是在加载中找到父窗口并将其替换为struct proc_bsdinfo {
...
struct timeval pbi_start;
...
}
。
KeyDownEvent