2015-02-06 3 views
0

저는 현재 Caliburn.Micro를 사용하는 WPF 프로젝트에서 작업 중이며 이벤트를 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)]" /> 

불행히도이 코드는 작동하지 않습니다. 을 UserControl에 바인딩 할 수 있으며 TextBox 또는 Button과 같은 특정 컨트롤에 바인딩 할 수 있습니까?

+0

이 링크가 도움이되는지 확인 - http://stackoverflow.com/questions/16719496/caliburn-micro-enter-key-event – Vinkal

답변

1

이 UserControl 컨트롤에 포커스가있는 경우 먼저 KeyDown 이벤트를 받고 처리합니다. 이렇게하면 UserControl이 수신하지 못하게됩니다.

이벤트를 캡처하려면 미리보기 키 다운을 사용하십시오. Preview ... 이벤트는 이런 종류의 시나리오를위한 것입니다. 정기적 인 이벤트가 터널링되는 반면 루트에서 하위 컨트롤까지 버블 링됩니다.

버블 링 및 터널링을 중지해야하는 경우 처리기 끝에 e.Handled = true;을 설정하는 것을 잊지 마십시오.

관련 문제