2009-07-10 7 views
0

많은 텍스트 상자가있는 WPF 사용자 정의 컨트롤이 있습니다. 이것은 WPF 창에서 호스팅됩니다. 텍스트 상자는 현재 바인딩되어 있지 않지만 그 중 아무 것도 입력 할 수 없습니다.텍스트 상자가있는 WPF Usercontrol

텍스트 상자 중 하나의 KeyDown 이벤트에 중단 점을 넣었으며 잘 눌렀으며 누른 키를 볼 수 있습니다. 스타일은 내가 뭔가를 분명 간과 바라고

<Style x:Key="SearchTextBox" 
     TargetType="{x:Type TextBox}"> 
     <Setter Property="Control.Margin" Value="2"/> 
     <Setter Property="Height" Value="20"/> 
     <Setter Property="Width" Value="140"/> 
     <Setter Property="HorizontalAlignment" Value="Left"/> 
    </Style> 

로 구현됩니다

<TextBox Grid.Row="3" 
      Grid.Column="4" 
      x:Name="PostcodeSearch" 
      Style="{StaticResource SearchTextBox}" 
      KeyDown="PostcodeSearch_KeyDown"/> 

글 상자가 선언됩니다.

편집 : KeyDown 및 KeyUp 이벤트를 추가하여 키 누름이 성공적으로 처리되었음을 증명했습니다. 사용자 지정 기능이 없습니다.

+2

"PostcodeSearch_KeyDown"메서드는 어떻게됩니까? 순수한 XAML 텍스트 상자와 스타일을 사용하면 모두 정상적으로 작동하므로 남아있는 유일한 방법은 해당 메서드에서 무언가가 상자에 영향을주는 것입니다. – Fenton

+0

또한, 아무것도 또는 TextBoxes 효과가 될 수있는 UserControl 내에서 설정되어 있습니까? – rmoore

답변

1

PostcodeSearch_KeyDown- 메서드 (또는 이벤트 체인의 텍스트 상자 앞에있는 다른 사람이 Preview_KeyDown-Event의 일부 상위 컨트롤 일 수도 있음)가 e.Handled = true (eventArg가 됨)으로 설정되면 이벤트가 전파되지 않습니다 (텍스트 상자와 같은) 더 많은 소비자들에게 보내지므로 어떤 행동도 일어나지 않을 것입니다.

또 다른 이유는 WPF 창은 윈폼 - 응용 프로그램에서 호스팅되는 수, 당신은 전체에 대한 WPF 윈폼 상호 운용성을위한 키보드 상호 작용 작업 (구글/빙하려면

ElementHost.EnableModelessKeyboardInterop(YourWindow); 

를 호출 할 필요가 있습니다 설명)