Текстовый контент только через кнопку - PullRequest
1 голос
/ 04 апреля 2019

Я пытаюсь получить следующее: на моей странице есть текстовое поле и кнопка.Когда пользователь нажимает «Enter» на клавиатуре, он должен делать то же самое, что и нажатие кнопки.

мой код выглядит примерно так:

<Page x:Class="MyApp.Pages.Page1"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  .....
  DataContext="{Binding Page1VM, Source={StaticResource Locator}}">

<Page.InputBindings>
    <KeyBinding 
        Key="Enter" 
        Command="{Binding Btn_ConfirmCommand}" />
</Page.InputBindings>
<Grid>
    <Grid >
     <TextBox Text="{Binding SelectedID}" />
     <Button  Command="{Binding Btn_ConfirmCommand}"/>
    </Grid>
</Grid>

Inside ViewModel:

public Page1VM()
{
   Btn_ConfirmCommand = new RelayCommand(Btn_ConfirmMethod);
}
...
void Btn_ConfirmMethod()
{
  MessageBox.Show(SelectedID);
}
public string SelectedID
{
    get{return selectedID;}
    set
    {
        Set(() => SelectedID, ref selectedID, value);
        RaisePropertyChanged("SelectedID");
    }
 }

Проблема: Когда я пишу некоторый контент внутри текстового поля и нажимаю кнопку, ящик сообщений печатает контент, но если я нажимаю клавишу ввода, он печатает пустую строку

1 Ответ

3 голосов
/ 04 апреля 2019

Установите UpdateSourceTrigger для Binding на PropertyChanged:

<TextBox Text="{Binding SelectedID, UpdateSourceTrigger=PropertyChanged}" />

Это должно привести к обновлению свойства источника при каждом нажатии клавиши. Значением по умолчанию является LostFocus.

...