仅通过按钮显示文字内容

时间:2019-04-04 11:22:43

标签: c# wpf mvvm keydown

我正在尝试获得以下信息:在页面内部,我有一个文本框和按钮。当用户在键盘上按下“ 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>

内部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");
    }
 }
  

问题:当我在文本框中写入一些内容并单击按钮时,消息框将打印内容,但是如果按Enter键,则会打印空字符串

1 个答案:

答案 0 :(得分:3)

UpdateSourceTrigger中的Binding设置为PropertyChanged

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

这应该使source属性在每个按键上都得到更新。默认值为LostFocus