让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
}
您可能对这些文章也感兴趣:- 让Silverlight的大小随浏览器大小变化
- Silverlight使用全屏实在是简单
- [翻译]The Web Is Dead
- Silverlight的内存回收存在问题?
- Beta版终究是Beta版
- 其实BrowserHost.Resize好像有个BUG
- Frame里的网页不能透明?
- Silverlight中Path的Data属性中命令大小写的区别
- 虚惊一场后,Silverlight 2 RC0这次是真的发布了
- Silverlight 2 RC0 Released?
与该文相关的评论:(我也想说几句)Processed in 0.1718794 second(s) , unknow queries
Powered by OWord V0.1, Even Not Alpha
(此博客程序为半成品,请勿索取,以免给您的心灵造成创伤^_^)
鄂ICP备05026031号
我来说两句:
用户中心
日志分类

最新日志
统计信息





