寻找WPF陡峭的学习曲线.
在好的Windows窗体中,我只是覆盖WndProc,并在它们进入时开始处理消息.
有人能告诉我如何在WPF中实现同样的事情吗?
在我的Windows窗体应用程序中,我希望每次按下它时都有一个特殊按钮来运行测试.有几十个控件,所以在每个控件中实现它需要花费太多时间.
有没有办法可以设置热键,无论我在应用程序中做什么,我都可以按键,它会触发我的事件?
我正在尝试捕获WPF应用程序中任何位置的按键事件,无论哪个UI元素具有焦点.目前我没有运气.任何人都可以提出一些我可能没试过的策略吗?或者,理想情况下,提供一个答案,例如"哦,这很容易,你只需这样做".
它是一个分布式应用程序,具有聊天系统.我正在寻找的效果是用户可以随时开始输入聊天消息,而无需切换到标准聊天框.我将使用FormattedText对象在应用程序中显示它们的消息.这很重要,因为这意味着应用程序中没有任何文本输入元素.
我的XAML结构看起来大致如下:
<MainWindow>
<Canvas 1>
<Canvas 2>
<Image 1 />
</Canvas 2>
<Image 2 />
</Canvas 1>
</MainWindow>
Run Code Online (Sandbox Code Playgroud)
我以编程方式将元素添加到Canvas 2中,并操纵Image 2,这就是它具有该结构的原因.
我已经尝试将KeyDown,KeyUp和Preview事件添加到MainWindow和Canvas 1,但它们似乎都没有触发(我用断点检查).在阅读了另一个相关问题之后,我也尝试在Loaded()方法中手动设置焦点在主窗口上.
我意识到这个网站上有很多相关的问题,但他们没有帮助我,因为:
感谢您抽出宝贵时间阅读我冗长的帖子,并感谢您的建议.
更新(在Rachel评论之后)当我放入TextBox并将焦点设置为TextBox时,将触发MainWindow级别的键事件方法.所以这就像宣传的那样.
但是,我真的希望在应用程序中根本没有明确的文本输入小部件.我希望用户能够开始输入以撰写邮件.
我是WPF和WinForms的新手,可以将热键添加到我通常使用的ProcessCmdKey表单中,这样可以轻松覆盖(添加)与键相关的功能(类似于此处描述的方式).有没有一种简单的方法来在WPF中分配热键?我正在使用带有键的命令,但有时这不起作用(我认为窗口上的其他一些控件会响应这些手势并完成它们的工作,因此我的命令无法响应预定义的键手势).