I use C# and WPF and MVVM
I have an editable Combobox so that a user can not only select items from the list but also type own text in the comboxbox' textfield
XAML:
<br>
<ComboBox IsEditable="True"<br>
IsTextSearchEnabled="True" <br>
IsTextSearchCaseSensitive="False"<br>
StaysOpenOnEdit="True"<br>
Text="{Binding TextEntered}"<br>
</ComboBox>
<br>
In the bound property "TextEntered" I can see in the Debugger the text that the user has typed - however this does not work if the user presses ENTER to finished his input. So how could I react when the users presses Enter ?
thank you
If you don't want to react on PropertyChanged, you can set the UpdateSourceTrigger to Explicit
<ComboBox IsEditable="True"
IsTextSearchEnabled="True"
IsTextSearchCaseSensitive="False"
StaysOpenOnEdit="True"
Text="{Binding TextEntered, UpdateSourceTrigger=Explicit}">
<ComboBox.InputBindings>
<KeyBinding Gesture="Enter"
Command="{Binding UpdateBindingOnEnterCommand}"
CommandParameter="{Binding RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type ComboBox}}}"></KeyBinding>
</ComboBox.InputBindings>
And call UpdateSource of the binding in the execute of your command
public class UpdateBindingOnEnterCommand : ICommand
{
...
public void Execute(object parameter)
{
if (parameter is ComboBox control)
{
var prop = ComboBox.TextProperty;
var binding = BindingOperations.GetBindingExpression(control, prop);
binding?.UpdateSource();
}
}
...
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With