WPF TextBox使用KeyBinding绑定Enter和Return无响应问题

        最近在做一个扫码枪识别条形码的功能,TextBox文本按回车键或者是扫码枪识别条形码自动触发查询功能,由于架构采用的是MVVM的开发模式,所以,刚开始采用KeyBinding的方式绑定命令,然后实现该功能;代码如下:


    
        
    

ViewModel绑定命令事件

private ICommand m_TestCmd;
public ICommand TestCmd
{
    get
    {
        return m_TestCmd ?? (m_TestCmd = new RelayCommand(() =>
        {

        }));
    }
}

    初步验证的时候,发现是可以的,条形码是全数字的会触发,但是条形码中包含字母时,就不触发命令事件了,这到底什么原因呢?

    调试发现,条形码中含字母时,识别的文本输入TextBox时,最后触发的不是Enter键,而是Return键,至于为什么会触发Return键呢,难道是扫码枪设置得原因,这个我也不清楚,得去网上找原因了。既然这样,那在界面中就把Return键给加上,但是发现还是没有触发。

    最后不采用KeyBinding绑定命令方式,直接使用PreviewKeyUp事件,在后台鼠标弹起事件中,调用ViewModel的函数;

private void Test_txt_PreviewKeyUp(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Enter || e.Key == Key.Return)
    {
        if (DataContext != null && (DataContext is ViewModel.TestViewModel))
        {
            ViewModel.TestViewModel vm = (ViewModel.TestViewModel)DataContext;
            if (vm != null)
            {
                vm.TestCmd.Execute(null);
            }
        }
    }
}

最后达到想要的结果;

在此做个笔记和分享,大家如果想到其他办法,欢迎评论交流,谢谢。

**************************************************************************************************************

你可能感兴趣的:(#,WPF,遇坑记,wpf)