让Silverlight User Control接收键盘消息
2007-11
昨天说Silverlight User Control不能接收键盘消息,但是Page.xaml是可以接收键盘消息。既然Page能够接收键盘消息,那么我们就可以用Page来接收消息,然后想办法转发给User Control页面就行了。一个简单的实现方法就是利用C#中的delegate来实现。
简单的例子如下:
1、先在Page.xaml.cs中声明一个delegate类型以及一个该类型的变量,其参数和KeyboardEventHandler的参数一样,这样就可以直接把事件传过去了;
public delegate void SubKeyBoardEventHandler(object sender, KeyboardEventArgs e);
public SubKeyBoardEventHandler subKeyHandler = null;
2、在Page.xaml.cs中监听键盘消息:
this.KeyDown += new KeyboardEventHandler(Page_KeyDown);
3、这个键盘事件Handler要写成这样:
void Page_KeyDown(object sender, KeyboardEventArgs e)
{
if (subKeyHandler != null)
{
subKeyHandler(sender, e);
}
}
4、在User Control页面中,需要在构造函数里把Page实例传过去,这样就能给subKeyHandler赋值了:
public UC(Page pc)
{
System.IO.Stream s = this.GetType().Assembly.GetManifestResourceStream("TestKeyEvent.UC.xaml");
this.InitializeFromXaml(new System.IO.StreamReader(s).ReadToEnd());
pc.subKeyHandler = testKeyHandler;
}
5、testKeyHandler如下:
void testKeyHandler(object sender, KeyboardEventArgs e)
{
//here is your code
}
您可能对这些文章也感兴趣:- 用JavaScript调用Silverlight(C#)中的方法
- 用XamlReader做一个简单的XAML预览工具
- Path的Stroke和Fill属性不能指向同一个SolidColorBrush对象?
- Silverlight Alpha 1.1十一月份不会过期
- Silverlight对MMS的支持并不好
- 让Silverlight User Control接收键盘消息
- 其实BrowserHost.Resize好像有个BUG
- Silverlight中Downloader的缺陷?
- Silverlight 3 Beta出来了
- Frame里的网页不能透明?
与该文相关的评论:(我也想说几句)Processed in 0.3593842 second(s) , unknow queries
Powered by OWord V0.1, Even Not Alpha
(此博客程序为半成品,请勿索取,以免给您的心灵造成创伤^_^)
鄂ICP备05026031号
我来说两句:
用户中心
日志分类

最新日志
统计信息





