2009-07-17 12 views
7

मैं कुछ कस्टम तर्क के आधार पर एक पृष्ठ पर सहायता फ़ाइल खोलना चाहता हूं। मैं अपने सभी विंडोज़ (मुख्य विंडो और मोडल संवाद) पर एफ 1 दबाकर उपयोगकर्ता को कैसे संभाल सकता हूं?मैं प्रत्येक WPF विंडो में शॉर्टकट कुंजी कैसे प्रबंधित कर सकता हूं?

मुझे पता है कि एक खिड़की में एफ 1 को कैसे संभालना है, लेकिन क्या यह वैश्विक रूप से किया जा सकता है, इसलिए मुझे अपनी सभी विंडोज़ में एक ही कोड जोड़ने की ज़रूरत नहीं है?

नीचे वह परीक्षण है जिसके साथ मैंने कोशिश की है कि एफ 1 बच्चे की खिड़की पर काम नहीं करता है।

Window1.xaml:

<Window x:Class="WpfApplication2.Window1" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 
    <Window.CommandBindings> 
     <CommandBinding Command="ApplicationCommands.Help" 
         Executed="CommandBinding_Executed"/> 
    </Window.CommandBindings> 
    <Grid> 
     <Button Content="Open a new window" 
       Click="Button_Click"/> 
    </Grid> 
</Window> 

Window1.xaml.cs:

using System.Windows; 
using System.Windows.Input; 

namespace WpfApplication2 
{ 
    partial class Window1 : Window 
    { 
     public Window1() 
     { 
      InitializeComponent(); 
     } 

     void CommandBinding_Executed(object sender, ExecutedRoutedEventArgs e) 
     { 
      MessageBox.Show("Help"); 
     } 

     void Button_Click(object sender, RoutedEventArgs e) 
     { 
      new Window().ShowDialog(); 
     } 
    } 
} 

उत्तर

11

मैं this पृष्ठ पर उत्तर मिल गया है। यही है, इसे मुख्य विंडो के कन्स्ट्रक्टर में उदाहरण के लिए रखें:

CommandManager.RegisterClassCommandBinding(typeof(Window), 
    new CommandBinding(ApplicationCommands.Help, 
     (x, y) => MessageBox.Show("Help"))); 
+0

यह बाल नियंत्रण के लिए भी काम करता है। अर्थात। अगर बाल नियंत्रण का चयन किया जाता है तो यह एफ 1 को संभाल देगा यदि उसके प्रकार के हैंडलर पंजीकृत हैं, अन्यथा विंडो हैंडलर ट्रिगर किया गया है। –