textbox回车事件中拿不到text的处理办法(wpf)

wpf做一个搜索框,想要在回车时搜索框内的文字。

 

<TextBox x:Name="SearchBox" Grid.Column="1"  Margin="350,35,52,21" Width="122" Height="34" RenderTransformOrigin="0.5,0.5" Text="{Binding Keyword}" PreviewKeyDown="SearchBox_OnKeyDown">
            <TextBox.InputBindings>
                <KeyBinding Key="Enter" Command="{Binding SearchCommand}" />
            </TextBox.InputBindings>
        </TextBox>
        <Button x:Name="btnSearch" Grid.Column="2" HorizontalAlignment="Left" Height="34" Margin="29.5,38,0,0" VerticalAlignment="Top" Width="34" Command="{Binding SearchCommand}" >
            <Image Height="34" Width="34" Source="/Icons/SearchIcon.png"/>
        </Button>

在不加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

转载于:https://www.cnblogs.com/devourer/p/3382576.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值