KeyDown事件绑定到用户控件

时间:2015-02-06 06:48:12

标签: c# wpf mvvm caliburn.micro

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

<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)]" />

不幸的是这段代码不起作用。甚至可以将Event绑定到UserControl,而不是绑定到TextBoxButton等特定控件?

1 个答案:

答案 0 :(得分:1)

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

使用PreviewKeyDown捕获事件。 Preview ...事件恰好适用于这种情况。它们从根部冒泡到子控件,而常规事件则向下延伸。

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