2011-06-22 45 views
2

有没有办法在Silverlight中创建全局键?我在最上面的Page元素中添加了一个KeyDown事件处理程序。当Button,TextBox,Calendar和RichTextBox等元素具有焦点时,我可以捕捉到关键信号。但DatePicker不会让我处理Page级别的关键事件。任何方式在非OOB SL中制作热键?Silverlight中的热键?

P.S.我假设DatePicker控件的行为与其他人不同,因为它仍在Silverlight Toolkit中。

+0

@ user246392 - 你有机会看看这个:http://msdn.microsoft.com/en-us/library/cc189015%28VS.95%29.aspx –

回答

1

您是否尝试过使用AddHandler方法?使用这种方法,您可以添加处理程序并定义是否要处理已处理的事件。

在我的简单示例中,我将它添加到app.xaml.c的RootVisual中。

private void Application_Startup(object sender, StartupEventArgs e) 
     { 
      this.RootVisual = new MainPage(); 
      RootVisual.AddHandler(UIElement.KeyDownEvent, new KeyEventHandler(HandleKeyDown), true); 
     } 

     private void HandleKeyDown(object sender, KeyEventArgs e) 
     { 
      //Add your keyhandling code here 
      Debug.WriteLine(e.Key); 
     } 

我试着用DatePicker它,它的工作原理。

希望这会有所帮助!

BR,

TJ

+0

是的 - 这应该工作,除非重点在于Popup中的控件,在这种情况下RootVisual不会获得该事件。 – RobSiklos

0

This可以帮助你。作者提供了两种使用HTML桥(当你的Silverlight没有焦点时)和使用Application.RootVisual上的KeyUp事件的方法。

我还没有尝试过自己,所以我不知道它是否工作。