Es ist sehr einfach, Button
s in WPF-Apps an Command
s in einer VIEWMODEL
Klasse zu binden . Ich möchte eine ähnliche Bindung für a erreichen TextBox
.
Ich habe ein TextBox
und ich muss es an ein binden, Command
das ausgelöst wird, wenn ich treffe, Enterwährend das TextBox
fokussiert ist. Derzeit verwende ich den folgenden Handler für das KeyUp
Ereignis, aber es sieht hässlich aus ... und ich kann es nicht in meine VIEWMODEL
Klasse aufnehmen.
private void TextBox_KeyUp(object sender, KeyEventArgs e)
{
if (e.Key == System.Windows.Input.Key.Enter)
{
// your event handler here
e.Handled = true;
MessageBox.Show("Enter Key is pressed!");
}
}
Gibt es einen besseren Weg, dies zu tun?
Ich habe mit dem gleichen Problem konfrontiert und hier eine Lösung gefunden . Hier ist das Codebeispiel:
<TextBox> <TextBox.InputBindings> <KeyBinding Command="{Binding Path=CmdSomething}" Key="Enter" /> </TextBox.InputBindings> </TextBox>
quelle
UpdateSourceTrigger=PropertyChanged
Hinweis: Möglicherweise müssen Sie Ihre TextBox-Bindung festlegen, damit dies funktioniert.Button.IsDefault
hilft nicht viel, wenn jedes Textfeld eine andere Schaltfläche und / oder einen anderen gebundenen Befehl auslösen soll.Ich mag Sarhs Antwort, aber sie würde in meinem Programm nicht funktionieren, wenn ich nicht
Enter
zuReturn
:<TextBox> <TextBox.InputBindings> <KeyBinding Key="Return" Command="{}" /> </TextBox.InputBindings> </TextBox>
quelle
<TextBox Text="{Binding FieldThatIAmBindingToo, UpdateSourceTrigger=PropertyChanged}"> <TextBox.InputBindings> <KeyBinding Command="{Binding AddCommand}" Key="Return" /> </TextBox.InputBindings> </TextBox>
Ich nahm die Antwort von hier
quelle
Sie können true auf die AcceptReturn-Eigenschaft setzen.
<TextBox AcceptsReturn="True" />
quelle