2009-07-10 4 views
0

Ich habe ein WPF-Benutzersteuerelement mit einer Anzahl von Textfeldern, das in einem WPF-Fenster gehostet wird. Die Textfelder sind derzeit nicht gebunden, aber ich kann sie nicht eingeben.WPF-Benutzersteuerung mit Textfeldern

Ich habe einen Breakpoint in das KeyDown-Ereignis eines der Textfelder gesetzt und es trifft es gut und ich kann den Schlüssel, den ich gedrückt habe, sehen.

Die Textfelder deklariert als

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

Der Stil als

<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> 

ich habe ich etwas offensichtlich übersehen bin der Hoffnung, umgesetzt wird.

EDIT: Ich habe nur die KeyDown und KeyUp Ereignisse hinzugefügt, nur um zu beweisen, dass die Tasten gedrückt wurden durchkommen. Ich habe keine benutzerdefinierten Funktionen.

+2

Was passiert sonst noch in der Methode "PLZSuchen_KeyDown"? Nur mit Ihrem reinen XAML-Textfeld und style alles funktioniert gut für mich, so ist das einzige, was übrig ist, dass etwas in dieser Methode die Box beeinflusst. – Fenton

+0

Gibt es auch irgendetwas, das auf oder in dem UserControl gesetzt ist, das die TextBoxes beeinflussen könnte? – rmoore

Antwort

1

Wenn Ihre PostcodeSearch_KeyDown-Methode (oder jemand anderes vor dem Textfeld in der Ereigniskette auch ein Eltern-Steuerelement im Preview_KeyDown-Event sein könnte) setzt e.Handled = true (e ist das EreignisArgs), wird das Ereignis nicht weitergegeben für weitere Verbraucher (wie der Textkasten) und damit keine Aktion stattfinden wird.

Ein weiterer Grund könnte sein, dass Ihre WPF-Fenster in einer WinForms-Anwendung gehostet wird, dann müssen Sie

ElementHost.EnableModelessKeyboardInterop(YourWindow); 

Um Tastatur Interaktion Arbeit (Google/Bing für WPF WinForms InterOp für eine vollständige anrufen zu machen Erklärung)