我正在尝试获得以下信息:在页面内部,我有一个文本框和按钮。当用户在键盘上按下“ 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键,则会打印空字符串
答案 0 :(得分:3)
将UpdateSourceTrigger
中的Binding
设置为PropertyChanged
:
<TextBox Text="{Binding SelectedID, UpdateSourceTrigger=PropertyChanged}" />
这应该使source属性在每个按键上都得到更新。默认值为LostFocus
。