WPF

2010-07-14 14 views
16

में किसी बटन पर शॉर्ट कट कुंजी असाइन करें WPF में किसी बटन को शॉर्ट-कट कुंजी कैसे असाइन करें?WPF

गूगलिंग ने मुझे मानक विनफॉर्म में '&' के बजाय _ को जोड़ने के लिए उत्तर दिया।

तो बाद मैं नीचे के रूप में किया है:

<Button Name="btnHelp" Content="_Help"></Button> 

मैं "एच" नहीं मिला रेखांकित किया।

यह पहला मुद्दा है।

दूसरा मुद्दा यह है कि रन-टाइम पर Alt + H दबाकर इसे निष्पादित करने के लिए कैसे करें। उदाहरण के लिए एक संदेश बॉक्स प्रदर्शित करने के लिए बस पर्याप्त है।

मैं सी #, WPF

धन्यवाद का उपयोग कर रहा हूं।

+1

रेखांकित ही दिखाई जब नीचे एएलटी दबाने है। – angularsen

उत्तर

2

शॉर्टकट आपके नमूना कोड के लिए सिर्फ एच है।

प्रारंभ में शॉर्टकट के लिए अंडरलाइन दिखाने के लिए एक विंडोज सेटिंग है और किसी ऐप द्वारा नियंत्रित नहीं है। विंडोज एक्सपी में, डिस्प्ले गुण -> उपस्थिति -> प्रभाव पर जाएं और आपको "चेक कुंजी दबाए जाने तक कीबोर्ड नेविगेशन के लिए रेखांकित अक्षरों को छुपाएं" लेबल वाला एक चेकबॉक्स दिखाई देगा। Vista/Win7 के लिए मुझे लगता है कि वे कहीं और सेटिंग को स्थानांतरित कर चुके हैं।

3

कुंजीपटल इशारों बाध्य करने के लिए, आप आदेशों साथ KeyGestures उपयोग करने के लिए की जरूरत है। इस पर अधिक जानकारी के लिए commands देखें। इसके अलावा पूर्वनिर्धारित कमांड के भार भी हैं जिनका उपयोग सीधे आपके एप्लिकेशन में किया जा सकता है (जैसे, कट, कॉपी, पेस्ट, हेल्प, प्रॉपर्टीज इत्यादि)।

XAML फाइल के शरीर:

33

खुद आदेशों के साथ बाध्यकारी कुंजी (+ बटन बंधन) के लिए समाधान

<Window.Resources> 
    <RoutedUICommand x:Key="MyCommand1" Text="Text" /> 
    <RoutedUICommand x:Key="MyCommand2" Text="Another Text" /> 
</Window.Resources> 

<Window.CommandBindings> 
    <CommandBinding Command="{StaticResource MyCommand1}" 
        Executed="FirstMethod" /> 
    <CommandBinding Command="{StaticResource MyCommand2}" 
        Executed="SecondMethod" /> 
</Window.CommandBindings> 

<Window.InputBindings> 
    <KeyBinding Key="Z" Modifiers="Ctrl" Command="{StaticResource MyCommand1}" /> 
    <KeyBinding Key="H" Modifiers="Alt" Command="{StaticResource MyCommand2}" /> 
</Window.InputBindings> 

<Grid> 
    <Button x:Name="btn1" Command="{StaticResource MyCommand1}" Content="Click me" /> 
    <Button x:Name="btn2" Command="{StaticResource MyCommand2}" Content="Click me" /> 
</Grid> 

और .cs फ़ाइल:

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

    public void FirstMethod(Object sender, ExecutedRoutedEventArgs e) 
    { 
     // btn1 
    } 

    public void SecondMethod(Object sender, ExecutedRoutedEventArgs e) 
    { 
     // btn2 
    } 
} 
+6

धन्यवाद ... लेकिन ...मुझे नहीं लगता कि यह प्रत्येक बार एक कुंजीपटल शॉर्टकट चाहता है जब चार अलग-अलग स्थानों में XAML को संपादित किए बिना किया जा सकता है? – Qwertie

+0

बस किसी और को कुछ दर्द बचाने के लिए - सुनिश्चित करें कि 'विंडो। स्रोत' विंडो 'कॉमांड बाइंडिंग/इनपुट बाइंडिंग' से पहले आता है। अन्यथा, आप संसाधन को खोजने में सक्षम नहीं होने के बारे में निश्चित रूप से रनटाइम समस्या में भाग लेंगे। – jep

+0

मुझे यहां केवल '' अनुभाग था, और मेरे दृश्य मॉडल में प्रत्येक 'कीबाइंडिंग' को 'आईसीओएमएंड' संपत्ति में बाध्य किया गया था। –

2

मुझे मिला सबसे सरल समाधान बटन के अंदर एक लेबल चिपकाना है:

<Button Name="btnHelp"><Label>_Help</Label></Button> 
31

यह पुराना है, लेकिन मैं आज भी एक ही मुद्दे में भाग गया।
मैंने पाया कि सबसे आसान समाधान बटन की सामग्री के लिए केवल AccessText तत्व का उपयोग करना है।

<Button Command="{Binding SomeCommand}"> 
    <AccessText>_Help</AccessText> 
</Button> 

जब आप Alt कुंजी दबाते हैं, "एच" बटन पर रेखांकित होगा।
जब आप कुंजी संयोजन Alt + H दबाते हैं, तो बटन से जुड़ी कमांड निष्पादित की जाएगी।

http://social.msdn.microsoft.com/Forums/vstudio/en-US/49c0e8e9-07ac-4371-b21c-3b30abf85e0b/button-hotkeys?forum=wpf

+5

सटीक रूप से क्यों किसी को SO पर थोड़ा "necromancing" करने के लिए स्वतंत्र महसूस करना चाहिए। मुझे आपका समाधान बहुत ही सुरुचिपूर्ण लगता है। धन्यवाद। – Barton

+9

पार्टी के लिए थोड़ा देर हो चुकी है, लेकिन <बटन सामग्री = "_ सहायता" ... /> 'चाल भी करता है। –

+1

@ माइकएसन यह कुछ समय हो गया है क्योंकि मैंने यह उत्तर लिखा था, और मैं पूरी तरह से आपसे सहमत हूं। किसी भी तरह से बिल्कुल वही काम करता है, और निर्णय उपयोगकर्ता के लिए है। [AccessText] के लिए एमएसडीएन पृष्ठ (https://msdn.microsoft.com/en-us/library/system.windows.controls.accesstext%28v=vs.110%29.aspx#exampleToggle) में एक उदाहरण है जो उपयोग करने से दिखाता है या तो विधि। – jhenninger

संबंधित मुद्दे

 संबंधित मुद्दे