作者:Emily___Emily_622 | 来源:互联网 | 2023-06-21 12:07
wpf做一个搜索框,想要在回车时搜索框内的文字。
"SearchBox" Grid.Column="1" Margin="350,35,52,21" 122" 34" RenderTransformOrigin="0.5,0.5" Text="{Binding Keyword}" PreviewKeyDown="SearchBox_OnKeyDown">
"Enter" Command="{Binding SearchCommand}" />
在不加PreviewKeyDown时,虽然都绑定了相同的SearchCommand,但是结果不同。回车进入断点看Keyword的内容和按button看到的内容不同,可能是在viewmodel中绑定的属性值没能及时的更新为搜索框中的文字。那么在什么情况下能更新呢,经过测试,在焦点从文本框离开时会触发更新,于是增加PreviewKeyDown来引发焦点离开。
private void SearchBox_OnKeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Enter)
{
SearchBox.MoveFocus(new TraversalRequest(FocusNavigationDirection.Next));
}
}
------------------
还有一个简单的处理方法,设置Button的IsDefault="True",不过这种方法将导致所有的textbox回车都引发buttonclick