Erfassen der Eingabetaste in einem Textfeld
In meinem WPF-Blick, ich bin versucht zu binden eine Veranstaltung auf die Enter-Taste wie folgt:
<TextBox Width="240" VerticalAlignment="Center" Margin="2" Text="{Binding SearchCriteria, Mode=OneWayToSource}">
<TextBox.InputBindings>
<KeyBinding Key="Enter" Command="{Binding EnterKeyCommand}"/>
<KeyBinding Key="Tab" Command="{Binding TabKeyCommand}"/>
</TextBox.InputBindings>
</TextBox>
Dieser code funktioniert und meiner EnterKeyCommand feuert, wenn der Benutzer die EINGABETASTE drückt. Das problem ist jedoch, dass, wenn das Ereignis ausgelöst wird, WPF noch nicht gebunden, den text in das Textfeld zu 'SearchCriteria'. Also bei meinem event feuert, wird der Inhalt von 'SearchCriteria' ist leer. Gibt es da eine einfache änderung, die ich machen kann in diesem code, so dass ich den Inhalt der textbox, wenn mein EnterKey Befehl feuert?
InformationsquelleAutor der Frage Hosea146 | 2011-04-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie ändern die
UpdateSourceTrigger
auf IhreTextBox.Text
Bindung anPropertyChanged
. Sehen hier.InformationsquelleAutor der Antwort micahtan
Können Sie dies tun, indem die TextBox ist
InputBindings
Eigenschaft alsCommandParameter
zu denCommand
:InformationsquelleAutor der Antwort O.Man
Können Sie auch in der code-behind.
Gewusst wie: Erkennen, Wenn Sie die Enter-Taste Gedrückt
In der überprüfen Sie enter/return, nur aufrufen, Ihre event-handler-code.
InformationsquelleAutor der Antwort K0D4
Ich weiß, das ist 6 Jahre alt, aber keine Antworten produzieren, die die richtige Antwort in seiner Gesamtheit mit XAML und kein code-behind.Ich hatte noch einige Arbeit zu tun. Für die Referenz der Ansatz ist der folgende. Zuerst die XAML -
Grundsätzlich der Ansatz ist, dass jeder Schlüssel geworfen wird, um das gebundene SearchText auf jeden Tastendruck. Also der string wird vollständig innerhalb SearchText einmal die return - /EINGABETASTE gedrückt wird. Also in der SearchEnterHit Befehl der komplette string wird innerhalb der TextBox steht über dem SearchText-Eigenschaft.
Wie oben erwähnt die UpdateSourceTrigger=PropertyChanged ist, was spült jeden Tastenanschlag, die SearchText Eigenschaft. Die Tastaturbelegung erfassen Sie die enter-Taste.
Dies ist wirklich das einfachste Mittel, dies zu tun, ohne code-behind und alle XAML. Sicher, dass Sie Spülung-Tasten, um die SearchText-Eigenschaft, oft aber in der Regel ist das kein problem.
InformationsquelleAutor der Antwort sagneta
Es ist auch getan werden kann, wie async-Ereignis.
Hier ist das Beispiel.
InformationsquelleAutor der Antwort Academy of Programmer