2011-04-13 16 views
8

तो मेरे पास एक चेक बॉक्स है जो WPF/MVVM का उपयोग करके कमांड को चलाता है यह ठीक काम करता है लेकिन मैं चेक बॉक्स की IsChecked प्रॉपर्टी को कमांड पैरामीटर के रूप में उपयोग करना चाहता हूं । मैंने कोशिश कीका उपयोग कैसे करें चेक बॉक्स में कमांड पैरामीटर के रूप में चेक किया गया

<CheckBox Margin="3" Content="Clear Selected OEM" 
           Command="{Binding Path=ClearOemCommand}" 
           CommandParameter="{Binding Path=IsChecked}"/> 

बू मैं उत्पादन विंडो कहते हैं

System.Windows.Data Error: 40 : BindingExpression path error: 'IsChecked' property not found on 'object' 

मैं कैसे पूर्वज खोजने के उपयोग करने के लिए अगर मैं एक और नियंत्रण से संपत्ति का उपयोग करना चाहता था लेकिन मैं यहाँ स्टम्प्ड हूँ पता होगा में कोई त्रुटि मिलती है - यह है शायद मुझे लगता है कि तुलना में आसान ... बस मेरे दिमाग में कनेक्शन नहीं बना रहा।

धन्यवाद!

+4

CommandParameter = "{बाइंडिंग पथ = IsChecked RelativeSource = स्व} – Arseny

+0

आप करना चाहिये कि एक जवाब Arseny तो यह upvoted जा सकता है और खोज आसान – BlackICE

+0

http: //www.wpfwiki.com/WPF%20Q5.3.ashx – BlackICE

उत्तर

28

CommandParameter

<CheckBox Margin="3" Content="Clear Selected OEM" 
    Command="{Binding Path=ClearOemCommand}" 
    CommandParameter="{Binding Path=IsChecked, RelativeSource={RelativeSource Self}}" /> 
+0

आप एक अल्पविराम से चूक गए :) –

+0

@Dan धन्यवाद! – Arseny

+0

क्या चेकबॉक्स की अनचेक स्थिति उसी तरह सेट करना संभव है? अगर मैं करता हूं वही संकलक कहता है कि आप कॉम सेट नहीं कर सकते हैं mandParameter एक से अधिक बार। – Sturm

1
इसके बजाय चेकबॉक्स पर आदेश बनाने के

आप एक CLR संपत्ति के साथ IsChecked बाध्य कर सकते हैं में RelativeSource स्व जोड़ सकते हैं और CLR संपत्ति के सेटर पर अपने आदेश तर्क पुनः करें। यह कमांड व्यवहार को सौंपने का एक और कामकाज है।

3

आप निम्न अपवादों तक आ जाते हैं के रूप में मैंने किया था ...

सेट संपत्ति System.Windows.Data.Binding.RelativeSource एक अपवाद

फेंक दिया बजाय इस प्रयास करें:

CommandParameter="{Binding RelativeSource={RelativeSource Self}, Path=IsChecked}" 
2

हाँ JW1 सही है। आप इस तरह भी elemen नाम का उपयोग कर सकते हैं, वह भी काम करेगा

"{Binding Path=IsChecked,ElementName=chkAll}" 
संबंधित मुद्दे