2009-07-10 10 views
0

私はWPFユーザーコントロールに多数のテキストボックスを持ち、これはWPFウィンドウでホストされています。 テキストボックスは現在バインドされていませんが、いずれにも入力できません。WPFのユーザーコントロール(テキストボックスあり)

私は、テキストボックスの1つの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"/> 

として宣言されています。

EDIT:KeyDownとKeyUpイベントを追加しただけで、キーが押されていることを証明できました。私はカスタム機能を持っていません。

+2

"PostcodeSearch_KeyDown"メソッドではどうなりますか? 純粋なXAMLテキストボックスを使用してスタイルを適用するだけで、すべてうまく動作するので、残りの唯一の方法は、そのメソッドの何かがボックスに影響を与えることです。 – Fenton

+0

また、何かがTextBoxesを実行する可能性のあるUserControl上またはその中に設定されていますか? – rmoore

答えて

1

あなたのPostcodeSearch_KeyDownメソッド(またはイベントチェーンのテキストボックスの前の誰かがPreview_KeyDownイベントの親コントロールになる可能性がある)がe.Handled = true(eはeventArgs)に設定されている場合、イベントは伝播されません(テキストボックスとして)消費者を増やすことになり、したがって何も起こりません。

もう一つの理由は、あなたのWPFウィンドウをリサイズ・アプリケーションでホストされていることかもしれない、あなたは完全なためWPF WinFormsの相互運用性のためのキーボード操作作業(グーグル/ビングを作るために

ElementHost.EnableModelessKeyboardInterop(YourWindow); 

を呼び出す必要があります説明)

関連する問題