2011-02-04 8 views
5

मुझे एक दृश्य की दृश्यता संपत्ति में बुलियन संपत्ति को बाध्य करने में एक अजीब समस्या है।एक दृश्य की दृश्यता संपत्ति समायोजित करें

मेरे पास एक 'मुख्य' दृश्य है जिसमें अन्य दृश्यों के साथ-साथ बटन, टेक्स्टबॉक्स, ग्रिड, स्टैकपैनल्स और कुछ टेलिक नियंत्रण सहित कई अन्य UIElements शामिल हैं। कुछ नियंत्रणों में उनकी दृश्यता मेरे व्यू मॉडेल पर बूलियन गुणों से जुड़ी हुई है, जैसे कि जब संपत्ति सकारात्मक होती है तो वे दिखाए जाते हैं, और जब नकारात्मक होते हैं तो वे ध्वस्त हो जाते हैं।

<Border Visibility="{Binding IsSectionShown, 
       Converter={StaticResource BoolToVisibilityConverter}}" > 

यह मेरे लिए पूरी तरह से काम कर रहा है। स्पष्ट है कि मैंने IsSectionShown सेटर में अधिसूचना ईवेंट ट्रिगर किया है, और नियंत्रण की दृश्यता तदनुसार समायोजित की गई है।

अब मेरे पास एक दृश्य है जिसे इसकी दृश्यता समायोजित करने की आवश्यकता है। स्पष्ट कार्यान्वयन

<vw:ActivityView DataContext="{Binding Activity}" 
       Visibility="{Binding IsPositive, 
         Converter={StaticResource BoolToVisibilityConverter}}" /> 

काम नहीं करता है! मेरा काम के आसपास एक StackPanel अंदर मेरे विचार लपेट और StackPanel की दृश्यता समायोजित करना है - और यह ठीक काम करता है: यह क्यों हो रहा है के रूप में

<StackPanel Visibility="{Binding IsPositive, 
       Converter={StaticResource BoolToVisibilityConverter}}"> 
    <vw:ActivityView DataContext="{Binding Activity}" /> 
</StackPanel> 

कोई भी विचार? वर्कअराउंड ठीक है लेकिन मैं अपनी समझ में अंतर को पहचानना चाहता हूं।

उत्तर

2

इन दोनों के लिए काम करने के लिए, IsPositive संपत्ति Activity दोनों के अंदर मौजूद होगी और डेटा संदर्भ में एक स्तर ऊपर Activity से आता है। लेकिन शायद यह नहीं है कि आप क्या चाहते हैं। इसके बजाय, आप कुछ इस तरह उपयोग कर सकते हैं ताकि दृश्यता दृश्य खुद पर लागू होने की जगह किसी दूसरे डेटा संदर्भ से आता है:

<vw:ActivityView DataContext="{Binding Activity}" 
       Visibility="{Binding IsPositive, ElementName=ParentElement, 
         Converter={StaticResource BoolToVisibilityConverter}}" /> 

जहां ParentElement पेरेंट तत्व है कि vw:ActivityView होता है।

+0

बेशक! धन्यवाद –