2010-10-29 19 views
56

तरह से मैं बनाया के साथ WPF में की बाइंडिंग बनाना KeyBinding था की तरह कुछ:एक से अधिक संशोधक कुंजी

<KeyBinding Modifiers="Ctrl" Key="S" Command="{Binding SaveCommand}" /> 

लेकिन क्या होगा अगर मैं दो संशोधक कुंजियों की जरूरत? उदाहरण के लिए, Ctrl + शिफ्ट

उत्तर

101

प्रलेखन कहा गया है कि तुम सिर्फ + चरित्र के साथ संशोधक अलग कर सकते हैं:

<KeyBinding Modifiers="Ctrl+Shift" Key="S" Command="{Binding SaveCommand}" /> 

रक्तमय जानकारी के लिए here देखें, मामले में नीचे निकाले प्रासंगिक बिट लिंक कभी गायब हो जाता है के साथ:


XAML

<object property="oneOrMoreModifierKeys"/> 

XAML मान

oneOrMoreModifierKeys - एक या अधिक संशोधक कुंजियों, ModifierKeys गणन द्वारा परिभाषित किया गया है, एक + चरित्र के साथ सीमांकित।


तुम भी नहीं बल्कि एक कुंजी/संशोधक कॉम्बो से अपने आप ही एक संकेत का उपयोग कर सकते हैं:

<KeyBinding Gesture="Ctrl+Shift+S" Command="{Binding SaveCommand}" /> 
है कि एक ही दस्तावेज़ लिंक के अनुसार

:

जब XAML में एक कीबाइंडिंग को परिभाषित KeyGesture निर्दिष्ट करने के दो तरीके हैं।

एक्सएएमएल में कीबाइंडिंग स्थापित करने का पहला तरीका कुंजीबाइंडिंग तत्व की जेस्चर विशेषता को परिभाषित करना है, जो सिंटैक्स को एक स्ट्रिंग के रूप में कुंजी और संशोधक निर्दिष्ट करने में सक्षम बनाता है, उदाहरण के लिए "CTRL + P"।

दूसरा तरीका कुंजी विशेषता और कुंजीबाइंडिंग तत्व के संशोधक विशेषताओं को परिभाषित करना है।

KeyGesture को सेट करने के दोनों तरीके समान अंतर्निहित वस्तु के बराबर और संशोधित हैं, लेकिन दोनों का उपयोग होने पर एक संघर्ष होगा। उस स्थिति में जब कुंजी, संशोधक, और जेस्चर विशेषताएँ पूरी तरह से सेट की जाती हैं, तो विशेषता जिसे अंतिम रूप से परिभाषित किया गया है, KeyGesture के लिए उपयोग किया जाएगा।

+3

बिल्कुल सही जवाब। इच्छा है कि मैं 1 अपवोट दे सकता हूं! – dkantowitz

11
<KeyBinding Command="{Binding SaveCommand}" 
      Gesture="Ctrl+Shift+S" /> 

MSDN प्रलेखीकरण, KeyBinding Class देखें।

3

यहां इस तरह के Alt + पी + WPF MVVM में एक के रूप में कई चरित्र शॉर्टकट कुंजी, लागू करने के लिए my code है।

(KeyDown घटना के लिए संलग्न व्यवहार) अपने XAML को यह करें:

cb:ShortCutBehavior.Command="{Binding Shortcuts.CmdKeyPressed}" 

आपके विचार मॉडल को यह करें:

ShortCuts Shortcuts = new ShortCuts(this); 

//Add Plenty of shortcuts here until your heart is desired 

Shortcuts.AddDoubleLetterShortCut(AddOrganization, Key.P, Key.A, ModifierKeys.Alt, true); 
Shortcuts.AddSingleLetterShortCut(CmdAddNewAgreement, Key.A, ModifierKeys.Alt); 

ये शॉर्टकट जोड़ने के दो उदाहरण हैं। पहले एक डबल पत्र शॉर्टकट है: Alt + पी + एक जो विधि AddOrganization रन() और दूसरे एक भी पत्र शॉर्टकट है: Alt + एक जो ICommand CmdAddNewAgreemnt निष्पादित करता है।

दोनों AddDoubleLetterShortCut और AddSingleLetterShortCut क्रियाएं या ICommands स्वीकार करने के लिए अधिभारित हैं।

यह कुछ जेनरेट करने पर मेरे पहले प्रयासों में से एक है, इसलिए आप विचार ले सकते हैं और इसे आपके लिए उपयुक्त बना सकते हैं।

5

मैं जानता हूँ कि प्रश्न XAML के लिए है, लेकिन यहाँ एक नमूना है कि अगर आप कोड में यह करने के लिए (एकाधिक ModifierKeys तार्किक या के माध्यम से निर्दिष्ट किया जा सकता) हैं:

new KeyBinding(SaveCommand, Key.S, ModifierKeys.Control | ModifierKeys.Shift) 
संबंधित मुद्दे