2009-11-30 9 views
5

मैं संग्रह के अंदर किसी आइटम से जुड़ने की कोशिश कर रहा हूं लेकिन उस आइटम के सूचकांक को "चर" होना चाहिए। उदाहरण के लिए निम्नलिखित छद्म वाक्य रचना लें:एक संग्रह आइटम के लिए एक परिवर्तनीय बाध्यकारी है

<TextBlock Text="{Binding Fields[{Binding Pos}]}" /> 

यह संभव तरह कुछ है? अगर मेरी संपत्ति पॉज़ 1 है तो इसे "फील्ड" संग्रह से पहले आइटम से जोड़ना चाहिए और यदि मेरा पॉज़ 3 है तो इसे संग्रह में तीसरे आइटम से जोड़ना चाहिए। मैंने इस स्थिति में अपनी समस्या को सरल बना दिया ...

क्या ऐसा कुछ करने योग्य और कैसे है?

उत्तर

0

आप ऐसी संपत्ति का उपयोग क्यों नहीं करते हैं जो संग्रह में वर्तमान आइटम लौटाता है और आपके WPF नियंत्रण को बाध्य करता है?

जैसे:

class myCollection 
{ 

    private string _current; 

    public string CurrrentField 
    { 
     get { return _current; } 
    } 

    // TODO: Set current item to whatever the current item is... 
} 

संपादित करें:

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

पहले संग्रह को भरें, फिर आप जानते हैं कि इसमें कितने आइटम हैं, फिर संग्रह के माध्यम से सहायक वर्ग लूप के साथ और संपत्ति को आइटम असाइन करें, फिर अपने ग्रिड, आदि में अगले कॉलम पर जाएं।

मुझे लगता है कि यह आपके लिए एक एल्गोरिदम लिखने के लिए नीचे आता है।

+0

क्योंकि मैं संग्रह से सभी तत्वों का उपयोग कर रहा हूं लेकिन अलग-अलग बाइंडिंग में हूं। जैसे मैंने कहा, यह सिर्फ समस्या का एक सरलीकरण है। मैं इसे डेटाग्रिड के कॉलम में उपयोग कर रहा हूं और मैं डेटाग्रिड के सभी कॉलमों को उसी टेम्पलेट का उपयोग करने के लिए चाहता हूं (लेकिन पहले कॉलम में फील्ड [0] के लिए बाध्यकारी होगा, दूसरा फ़ील्ड [1] इत्यादि। पता नहीं कि भविष्य में यूई के कितने कॉलम होंगे। यह डेटाबेस से उत्पन्न होता है)। मूल रूप से यह ऊपर वर्णित समस्या को हल करने के लिए नीचे आता है। लेकिन इस संभावना का सुझाव देने के लिए धन्यवाद। – Jan

5

हां, यह संभव है। आपको बाध्यकारी कनवर्टर को कार्यान्वित करना चाहिए जो संग्रह संग्रह में संग्रह को परिवर्तित करेगा और कनवर्टर पैरामीटर के रूप में इंडेक्स लेगा। तो फिर तुम इस तरह उसका उपयोग करेंगे:

<TextBlock Text="{Binding Fields, 
        Converter={StaticResource CollectionToItemConverter, 
        ConverterParameter={Binding Pos}}}" /> 

आप इस कनवर्टर या कन्वर्टर्स के बारे में अतिरिक्त जानकारी के लिए एक कोड की जरूरत है, एक टिप्पणी छोड़ कृपया।

उम्मीद है कि यह मदद करता है।

+0

धन्यवाद। यह मेरे लिए वास्तव में अच्छा लगता है। – Jan

+0

इसे सुनकर खुशी हुई! =) अगर यह आपके लिए काम करता है तो उत्तर स्वीकार करना न भूलें। =) – levanovd

+0

कुछ दिन, मैं IValueConverter से मुझसे शादी करने के लिए कहूंगा .. – cwap

1

आईसीओलेक्शन व्यू पर पढ़ने का प्रयास करें ... यह आपको मदद कर सकता है क्योंकि यह आपको अपने टेक्स्ट को बाध्य करने के लिए आइटम की अनुक्रमणिका स्वचालित रूप से देता है।

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