2009-05-30 7 views
9

रूटेड कॉमांड के निर्माता को अंतिम तर्क के रूप में "स्वामी प्रकार" है। इसका महत्व क्या है? जब इसका इस्तेमाल होता है?RoutedCommand 'क्लास कन्स्ट्रक्टर स्वामित्व तर्क क्या उपयोग है?

MSDN प्रलेखीकरण पूरी तरह से कारण है कि यह आवश्यक है के बारे में कोई सुराग नहीं देता है और सभी MSDN

से आदेश के लिए

उद्धरण है कि क्या मैं एक प्रकार का उपयोग कर सकते

ownerType 
    Type: System.Type The type 
    which is registering the command. 

एक और बात है। नामों की सरणी से गतिशील रूप से नए रूटेड कमांड बनाते समय मुझे किस प्रकार का उपयोग करना चाहिए। ऐसा लगता है कि किसी भी प्रकार का काम करता है, इसलिए मैं UIElement का उपयोग कर रहा हूं, लेकिन यदि इसके लिए एक और अधिक उपयुक्त प्रकार है तो मैं जानना चाहता हूं।

उत्तर

6

रूटेड कॉमांड के स्रोत से पता चलता है कि यह प्रकार मालिक टाइप प्रकार बन जाता है। InputGestures प्राप्त करते समय इस संपत्ति को निम्नलिखित निजी विधि द्वारा अंततः पूछताछ की जाती है। तो ऐसा लगता है कि इस प्रकार का उपयोग RoutedCommand बनाने वाले प्रकार के आधार पर कमांड के एक (हार्ड-कोडेड) सेट को देखने के लिए किया जा रहा है।

private InputGestureCollection GetInputGestures() 
{ 
    if (this.OwnerType == typeof(ApplicationCommands)) 
{ 
    return ApplicationCommands.LoadDefaultGestureFromResource(this._commandId); 
} 
if (this.OwnerType == typeof(NavigationCommands)) 
{ 
    return NavigationCommands.LoadDefaultGestureFromResource(this._commandId); 
} 
if (this.OwnerType == typeof(MediaCommands)) 
{ 
    return MediaCommands.LoadDefaultGestureFromResource(this._commandId); 
} 
if (this.OwnerType == typeof(ComponentCommands)) 
{ 
    return ComponentCommands.LoadDefaultGestureFromResource(this._commandId); 
} 
return new InputGestureCollection(); 
} 
+0

कोई भी समझा सकता है क्यों? –

+2

शायद सिर्फ "क्योंकि।" किसी भी अन्य के रूप में एपीआई डिजाइन के लिए एक अच्छा कारण है। * ब्लीच * –

3

मैं जानता हूँ कि यह एक बहुत पुरानी सवाल है, लेकिन यह शीर्ष खोज "routedcommand ownertype" के लिए मारा है।

प्रत्येक रूटेड कॉमांड ऑब्जेक्ट के भीतर एक मालिक टाइप और नाम संग्रहीत करना आपको कोड में संदर्भों को कैसे ढूंढें इस पर एक संकेत देता है। मान लें कि आप किसी विधि पर डीबगर चला रहे हैं जिसमें मनमाना ICommandSource पैरामीटर है। आप कमांड प्रॉपर्टी की जांच कर सकते हैं, और यदि आप देखते हैं कि मालिक टाइप CommonCommands है और नाम "DoSomething" है, तो आप कॉमनकॉमैंड्स क्लास के DoSomething फ़ील्ड पर नेविगेट कर सकते हैं, जहां उपयोगी टिप्पणी हो सकती है, या CommonCommands.DoSomething के संदर्भों के लिए संबंधित कमांडबिंडिंग्स को ढूंढने के लिए खोज सकते हैं या कुछ और। उन गुणों के बिना, रूटेड कॉमांड सिर्फ एक अज्ञात वस्तु होगी।

मुझे नहीं पता कि एपीआई डिजाइनरों को वास्तव में दिमाग में क्या था जब वे तर्क शामिल थे, लेकिन यह कम से कम मेरे लिए उपयोगी रहा है।

+0

तो इसका कोई प्रभाव नहीं है? यह सिर्फ "दस्तावेज़ीकरण" के लिए है? –

+0

@ScottStafford इसका एक उद्देश्य है। यदि आप डेनिस फिलिप्स टिप्पणी को देखते हैं, तो 'GetInputGestures' निजी विधि इनबिल्ट कमांड के लिए इनपुट जेस्चर लोड करती है। मुझे लगता है कि वे अभी भी सार्वजनिक रूप से इसका पर्दाफाश करते हैं ताकि आप एक प्रकार निर्दिष्ट कर सकें कि उनका आंतरिक कोड अस्वीकार कर देता है। – NWoodsman

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