WPF UserControl响应PreviewKeyDown事件方法
之前在一个项目中,Window窗口嵌入UserControl页面,在UserControl控件页面中添加PreviewKeyDown或者KeyDown事件,软件均不触发事件;在Window窗口可以响应事件,但是由于项目上下文绑定,调用不到想要执行的函数,所以写个文章记录一下,以便后期遇到同样问题,能及时解决。
1、UserControl后台逻辑处理页面中添加
public void CallKeyDown(KeyEventArgs e)
{if (e.Key == Key.Space){if (DataContext != null){if (((MainViewModel)DataContext).MagnetronVM != null)if (((MainViewModel)DataContext).MagnetronVM.IsEnabled_Position == true)((MainViewModel)DataContext).MagnetronVM.StopCtrl(); }}
}
2、在Window的xaml 窗口设置中添加PreviewKeyDown事件
<Window x:Class="RealStomach_WPF.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:local="clr-namespace:RealStomach_WPF"Height="950" Width="1800"PreviewKeyDown="Window_PreviewKeyDown"><Viewbox HorizontalAlignment="Center" VerticalAlignment="Center" Stretch="Fill"><StackPanel HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="5,0,5,0"><local:RealMainView x:Name="realView" Background="#FF0E121B"/></StackPanel></Viewbox>
</Window>
3、Window 后台逻辑处理,响应PreviewKeyDown事件:
private void Window_PreviewKeyDown(object sender, KeyEventArgs e)
{this.realView.CallKeyDown(e);
}
扩展:
在Panel(StackPanel、Canvas、Grid)上或者是在一些默认不支持Focus的控件上添加了KeyDown或者KeyUp,处理方法在鼠标左键点击事件中,让控件获取到焦点,并且设置该控件Focusable="True";
具体代码示例:
<!--前端UI-->
<StackPanel x:Name="stanpan" Focusable="True"/>
//后台左键响应事件
private void MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{Grid1.Focus();
}
WPF UserControl响应PreviewKeyDown事件方法相关推荐
- cocos2d ccLayer响应触摸事件方法:CCStandardTouchDelegate 与 CCTargetedTouchDelegate
cocos2d ccLayer响应触摸事件方法:CCStandardTouchDelegate 与 CCTargetedTouchDelegate 以下内容转载自:http://blog.sin ...
- ListView不能响应itemclick事件的解决方法
原文:http://blog.csdn.net/xanxus46/article/details/8348931 大家都知道listview可以根据自己的需求,重写baseadapter ,实现自己的 ...
- Android 响应用户事件的方法
同绘图一样, View 也是通过回调函数来响应用户事件的.键盘事件的回调函数有多个,以对应不同的事件,我们暂时只用到 onKeyDown ,对应按键被按下的事件,其他函数以后用到再介绍.让我们重载 o ...
- C#中WPF响应键盘事件
WPF中的键盘事件用法如下: 在需要监听键盘事件的界面XAML中注册键盘按下的事件KeyDown="LoginWindow_KeyDown". <Window x:Class ...
- LibVLCSharp在WPF中无法响应鼠标事件
问题原因 官方LibVLCSharp库的VideoView在WPF中其实还是使用的Win32控件 WPF控件会被Win32控件遮挡,所以无法响应鼠标事件. 解决办法 在VideoView控件上添加一层 ...
- WPF 学习笔记 路由事件
1. 可传递的消息: WPF的UI是由布局组建和控件构成的树形结构,当这棵树上的某个节点激发出某个事件时,程序员可以选择以传统的直接事件模式让响应者来响应之,也可以让这个事件在UI组件树沿着一定的方向 ...
- WPF listviewItem 鼠标双击事件
WPF listviewItem 鼠标双击事件 一.Listview 控件的命名 <ListView x:Name="SListView" ItemContainerSt ...
- c语言windows程序设计 - 第十天,C语言Windows程序设计 - 第十天 - 响应键盘事件...
响应键盘事件 ------------------------ 在开始学习有关键盘事件的知识前首先来看一段代码(回调函数这部分的代码): 1 LRESULT CALLBACK WndProc( HWN ...
- [转]Listview的onItemClickListener无法响应的解决方法
在Android软件设计与实现中我们通常都会使用到ListView这个控件,系统有一些预置的Adapter可以使用,例如SimpleAdapter和ArrayAdapter,但是总是会有一些情况我们需 ...
最新文章
- STM8S单片机修改工程编译器配置
- boost::multiprecision模块gmp相关的测试程序
- java 蓝桥杯算法训练 猴子分苹果(题解)
- scanner python_Python之Scanner编写
- 最小高度100%页脚保持在底部的布局方法
- 从小到大排列组合 php,求一个一维数组中,n个元素的不同组合,并返回该数组
- 利用抓包工具分析数据帧具体内容
- w ndows10专业版连接不上网,Windows10连不上无线网怎么办 Windows10修复网络教程
- Windows下Redis-Cluster伪集群搭建
- FusionChartsFree的用法
- selenium 网址
- Linux系统的安装
- 论文翻译—Ciphertext-Policy Attribute-Based Encryption
- 使用U盘为台式机安装centos7
- 150行Python代码模拟太阳系行星运转
- Wifi P2p技术研究
- 2021-08-09-ROS学习-消息创建,发布者和订阅者实现及测试
- 近期FTDI的FT232RL杀疯了,给大家介绍一款国产替代P TO P的高性能GR232RL
- 卡在返回驾驶舱–孤岛危机
- IDEA Maven工程出现org.codehaus.plexus.component.repository.exception.ComponentLookupException错误
热门文章
- flutter取消动态字体大小
- 微信小程序3-模板与配置
- access查找出生日期年份_access查询最大年龄减最小年龄
- html的table 菜鸟,HTML table 标签 | 菜鸟教程
- android重新启动_如何重新启动Android智能手机或平板电脑
- python mpi4py multiprocessing_python基于multiprocessing的多进程创建方法
- 缓存加速-----Squid-访问控制列表日志分析反向代理
- 高考倒计时100天....99天
- Linux 串口终端kermit安装和使用
- android 流畅动画svg,android svg动画