2015-02-06 89 views
0

我目前正在使用Caliburn.Micro在WPF项目上工作,并且想要将KeyDown事件绑定到UserControl。如果打开Window并且用户按下任何按钮,则应该触发它。KeyDown事件绑定到用户控件

<UserControl x:Class="Test.Views.AppView" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     xmlns:cal="http://www.caliburnproject.org" 
     cal:Message.Attach="[Event KeyDown] = [TestMethod($executionContext)]" /> 

不幸的是,这段代码不起作用。是否可以绑定EventUserControl而不是像TextBoxButton这样的特定控件?

+0

看看这个链接是否有帮助 - http://stackoverflow.com/questions/16719496/caliburn-micro-enter-key-event – Vinkal 2015-02-06 09:17:47

回答

1

如果此UserControl上的控件具有焦点,它将首先接收KeyDown事件并处理它。这将阻止UserControl接收它。

使用PreviewKeyDown捕获事件。预览...事件正好适用于这种场景。他们从根源向子控件冒泡,而常规事件则向下隧道。

如果冒泡和隧道应该停止,不要忘记在处理程序结束时设置e.Handled = true;