2010-08-17 15 views
19

के रूप में पास कर रहा है, मैं उस विंडो को कैसे पास कर सकता हूं जो मैं वर्तमान में कमांड के पैरामीटर के रूप में कर रहा हूं?वर्तमान विंडो को कमांड पैरामीटर

मैं XAML-मार्कअप में यह करना चाहते:

<Button Command="CommandGetsCalled" CommandParameter="-this?-" /> 
+0

क्यों? जहां तक ​​मुझे पता है XAML में कोई "यह" संकेत नहीं है। इसके अलावा, इस मामले में 'यह' शायद बटन होगा। तुम क्या करने की कोशिश कर रहे हो? –

+0

-इस- मेरा मतलब विंडो विंडो युक्त था। मैं इसे शीर्षक में और पाठ में लिखता हूं, कि मैं खिड़की को पास करना चाहता हूं। राहेल और डैनियल प्रैट के उत्तरों के रूप में, यह स्पष्ट है;) – SwissCoder

उत्तर

52

वहाँ मैं यह करने के बारे में सोच सकते हैं के दो तरीके हैं: खिड़की एक नाम (दें Window टैग पर एक x:Name विशेषता के माध्यम से, और उसके बाद इस तरह एक बाध्यकारी निर्माण (विंडो के नाम हो जाती है 'ThisWindow' है):

<Button Command="CommandGetsCalled" CommandParameter="{Binding ElementName=ThisWindow}" /> 

कुछ अधिक सामान्य (वर्तमान विंडो कोई नाम देने पर निर्भर नहीं करता) के लिए, बाध्यकारी इस तरह निर्माण किया जा सकता :

<Button Command="CommandGetsCalled" CommandParameter="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}}" /> 
+1

क्या आप कृपया मुझे दिखा सकते हैं कि यह व्यूमोडेल में कैसा दिख सकता है? – CeOnSql

18

आप एक पैरामीटर के रूप बटन पास करना चाहते हैं आप एक RelativeSource

के बंधन की कोशिश कर सकते:

<Button Command="CommandGetsCalled" 
     CommandParameter="{Binding RelativeSource={RelativeSource Self}}" /> 

आप एक पैरामीटर के रूप विंडो पास करना चाहते हैं:

<Button Command="CommandGetsCalled" 
     CommandParameter="{Binding RelativeSource={ 
      RelativeSource AncestorType={x:Type Window}}}" /> 
+0

धन्यवाद राहेल। मैंने आपके और डैनियल प्रैट के समाधानों को देखा। असल में वे काफी समान हैं। लेकिन मैं उसे जवाब के रूप में चिह्नित करूंगा, क्योंकि मुझे विंडो के नाम से विंडो का उपयोग करने का विचार पसंद है। – SwissCoder

+0

जब मैं 'बटन' पैरामीटर उदाहरण के रूप में उपयोग करने का प्रयास करता हूं, तो मुझे 'निर्दिष्ट दृश्य पहले से ही किसी अन्य दृश्य का एक बच्चा है या किसी compositionTarget की जड़ है।' कोई विचार? – Maslow

+0

यह पता चला क्योंकि मैं 'लिनपैड' के माध्यम से 'canExecute' में बटन को 'डंप()' करने का प्रयास कर रहा था जो इसे प्रदर्शित करेगा wpf – Maslow

1

मेरी स्थिति में प्रदान किए गए उत्तरों में से कोई भी काम नहीं किया।

यह मेरे लिए काम किया:

<window x:Name="myWindow"> 
<Button Command="Command" CommandParameter={x:Reference Name=myWindow}/> 
</window> 
संबंधित मुद्दे