WPF中TextBox使用KeyBinding绑定命令,键盘事件

这篇具有很好参考价值的文章主要介绍了WPF中TextBox使用KeyBinding绑定命令,键盘事件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

<TextBox>
	<TextBox.InputBindings>
		<KeyBinding Key="Enter" Command="{Binding TestCmd}"/>
	</TextBox.InputBindings>
</TextBox>

对应的ViewModel中绑定命令事件,代码如下所示

//ViewModel文件夹下文件
public class TestViewModel
{
    private ICommand m_TestCmd;
    public ICommand TestCmd
    {
	    get
	    {
		    return m_TestCmd ?? (m_TestCmd = new RelayCommand(() =>
		    {
		    }));
	    }
    }
}

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

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

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

    xaml设计界面中,TextBox使用PreviewKeyUp事件代码

<TextBox PreviewKeyUp="Test_txt_PreviewKeyUp"/>

    在xaml后台(xxxx.xaml.cs) 文件中添加Loaded事件把ViewModel中TestViewModel类和xaml的上下文绑定,代码如下所示

private void TestView_Loaded(object sender, RoutedEventArgs e)
{
	DataContext = new ViewModel.TestViewModel();
}

    xaml后台写Test_txt_PreviewKeyUp事件,调用ViewModel中的函数。

private void Test_txt_PreviewKeyUp(object sender, KeyEventArgs e)
{
	if (e.Key == Key.Enter || e.Key == Key.Return)
	{
        //DataContext:上下文
        //ViewModel:项目中文件夹名称,存放XAML对应的ViewModel类文件
        //TestViewModel:xaml对应的ViewModel类
		if (DataContext != null && (DataContext is ViewModel.TestViewModel))
		{
			ViewModel.TestViewModel vm = (ViewModel.TestViewModel)DataContext;
			if (vm != null)
			{
				vm.TestCmd.Execute(null);
			}
		}
	}
}

    最后达到想要的结果;

    在此做个笔记和分享,大家如果想到其他办法,欢迎评论交流,谢谢。文章来源地址https://www.toymoban.com/news/detail-633770.html

到了这里,关于WPF中TextBox使用KeyBinding绑定命令,键盘事件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 关于WPF中Command绑定传参数以及将命令绑定到其它事件的方法

    前言:在WPF中,将命令绑定到一个Button的Command属性中是非常简单的事情,例如: 但是很多时候,我们要实现其它事件的命令绑定,以此实现彻底的MVVM开发模式,那就得用到微软另外一个神器了!它就是程序集System.Windows.Interactivity,在网上可以下载System.Windows.Interactivity.dll这

    2024年02月11日
    浏览(42)
  • WPF MvvM框架(MvvMLight,Microsoft Toolkit Mvvm,CommunityToolkit.Mvvm;鼠标,键盘,手写等事件绑定如:抬起按下事件)

    目录 1.MvvMLight(已废弃) 2. Microsoft Toolkit Mvvm(已废弃)  3.CommunityToolkit.Mvvm框架 4.Mvvm中的事件绑定 4.1 DataGrid表中按钮点击事件 4.2 绑定 鼠标事件,键盘事件,手写笔事件,多点触控事件 5.和PLC设备建立联系(联调)    本文中,继承接口,同步数据方法,command用法均一致; 1.继

    2024年02月04日
    浏览(61)
  • WPF工控机textbox获得焦点自动打开软键盘

    1.通过nuget安装 osklib.wpf  2.在textbox getFoucs中敲入如下代码即可实现获得焦点弹出软键盘  3.如果界面上的textbox比较,就直接在窗体事件中写。注意第一句为判断是否为textbox

    2024年02月10日
    浏览(44)
  • WPF开发经验-WPF的TextBox控件的MouseDown事件不响应的解决方法

    最近项目有个需求,大概是,当点击某个TextBox时,先执行一些业务上的逻辑处理。 于是按以往思维,将TextBox的MouseDown事件关联事件处理方法,将业务处理写在方法里。 调试发现,点击TextBox时,事件处理方法未执行。 通过查阅微软官方文档了解到问题原因。 附上文档链接:

    2024年02月08日
    浏览(44)
  • WPF TextBox内容修改命令

    TextBox     Background=\\\"{x:Null}\\\"     Text=\\\"{Binding SearchForContent, Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}\\\"     i:Interaction.Triggers         i:EventTrigger EventName=\\\"TextChanged\\\"             i:InvokeCommandAction Command=\\\"{Binding TextChangedCommand}\\\" /         /i:EventTrigger         i:EventTrigger EventName=\\\"LostFocu

    2024年02月11日
    浏览(39)
  • WPF 如何实现事件绑定 (MVVM)

    首先说到绑定,一般是在WPF 中常见的,因为WPF中有一个比较好用的框架叫做 MVVM 所以View层的按钮等元件的的动作都是需要和后台ViewModel 中的函数进行绑定的。 如 我们最常见的按钮的command 绑定 这里面的command 是命令,不是事件 如果点击图片,或者按钮抬起来的时候需要触

    2024年02月04日
    浏览(55)
  • WPF 绑定binding都有哪些事件

    主要包含以下几个事件: 1. UpdateSourceTrigger:用于控制数据绑定如何更新源数据的事件 PropertyChanged:每当目标属性的值更改时,将立即更新源属性。 LostFocus:当目标元素失去焦点时,更新源属性。 Explicit:只有在调用BindingExpression.UpdateSource方法时才会更新源属性。 Default:与

    2024年02月05日
    浏览(56)
  • WPF鼠标、键盘、拖拽事件、用行为封装事件

    本文主要介绍了WPF中常用的鼠标事件、键盘事件以及注意事项,同时使用一个案例讲解了拓展事件。除此之外,本文还讲述如何用行为(Behavior)来封装事件。 Windows中的事件通过消息机制来完成,也就是Windows系统来捕获用户输入(如鼠标点击、键盘输入),然后Windows发送一

    2024年01月23日
    浏览(50)
  • 【WPF】异步任务更新UI、绑定命令、绑定字符串属性

    WPF异步任务 主界面 在视图模型中定义命令: 在主界面xaml中绑定命令:  创建命令实例:

    2024年02月09日
    浏览(62)
  • WPF --- TextBox的输入校验

    在WPF应用程序开发中,数据校验是确保用户输入数据的正确性和完整性的重要一环。 之前在做一些参数配置功能时,最是头疼各种参数校验,查阅一些资料后,我总结了数据校验方式有两种: ValidationRule IDataErrorInfo 接下来分别介绍这两种校验方式。 ValidationRule 是一个抽象类

    2024年02月05日
    浏览(72)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包