Привязать TextBox к нажатию клавиши Enter - PullRequest
99 голосов
/ 19 февраля 2009

Привязка данных по умолчанию для TextBox - TwoWay, и он фиксирует текст в свойстве только тогда, когда TextBox потерял фокус.

Существует ли какой-либо простой способ XAML для привязки данных при нажатии клавиши Enter на TextBox ?. Я знаю, что это довольно легко сделать в коде, но представьте, если это TextBox внутри какого-то сложного DataTemplate.

Ответы [ 12 ]

1 голос
/ 30 августа 2016

Ответил здесь довольно элегантно, используя прикрепленное поведение, мой предпочтительный метод почти для всего.

WPF как сделать так, чтобы текстовое поле теряло фокус после нажатия enter

0 голосов
/ 03 мая 2018

Лично я считаю, что расширение разметки - более чистый подход.

public class UpdatePropertySourceWhenEnterPressedExtension : MarkupExtension
{
    public override object ProvideValue(IServiceProvider serviceProvider)
    {
        return new DelegateCommand<TextBox>(textbox => textbox.GetBindingExpression(TextBox.TextProperty).UpdateSource());
    }
}


<TextBox x:Name="TextBox"
             Text="{Binding Text}">
        <TextBox.InputBindings>
            <KeyBinding Key="Enter"
                        Command="{markupExtensions:UpdatePropertySourceWhenEnterPressed}" 
                        CommandParameter="{Binding ElementName=TextBox}"/>
        </TextBox.InputBindings>
</TextBox>
...