2015-02-06 137 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;