2011-06-22 43 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事件的方法。

我還沒有嘗試過自己,所以我不知道它是否工作。