मेरे पास यह आवश्यकता है, कि मेरे पास आइटम (ऑब्जर्जेबल कोलेक्शन) का संग्रह है, लेकिन मैं केवल चाहता हूं पहली वस्तु प्रदर्शित करने के लिए। आवश्यकता इस तथ्य से आती है कि ज्यादातर मामलों में, संग्रह में केवल एक आइटम होता है। और अंतरिक्ष सीमा के कारण, यहां तक कि यदि संग्रह में एक से अधिक आइटम हैं, तो हम आइटम की संख्या, पहले के विवरण (पूर्व स्थिति के समान प्रस्तुति) और ...
प्रतीक को इंगित करना चाहते हैं उपयोगकर्ता जो अधिक आइटम है। और जब माउस यूआई तत्व से अधिक हो जाता है तो पॉपअप अंततः सभी वस्तुओं को प्रदर्शित करेगा।डब्ल्यूपीएफ: किसी संग्रह में केवल एक आइटम से जुड़ने के लिए, आइटम्सकंट्रोल का उपयोग न करें क्योंकि मैं उन सभी को प्रदर्शित नहीं करना चाहता हूं
पहला समाधान मैं के (अन्य सुझाव है कृपया अगर वे बेहतर कर रहे हैं) है सोच सकते हैं इस संग्रह के लिए बाध्य करने के लिए (लेकिन एक ItemsControl
का उपयोग नहीं) और परिभाषित एक DataTemplateSelector
व्युत्पन्न वर्ग (जो या तो DataTemplate
केवल एक ही प्रदर्शित करने के लिए वापसी आइटम, या DateTemplate
जिसमें ...
और संग्रह में आइटम्स की संख्या के आधार पर अधिक जानकारी के लिए पॉपअप है) और इसे ContentTemplateSelector
के रूप में उपयोग करें।
लेकिन अब मेरा प्रश्न: कैसे मेरे DataTemplate
दोनों XAML में दिखेंगे, ताकि वे संग्रह में केवल पहला आइटम प्रदर्शित कर सकें? जाहिर है, मेरे पास ItemsControl
नहीं हो सकता है।
अद्यतन:
अब मैं (के बाद से वहाँ पहले से ही है कुछ जवाब मैं इसे अब और नहीं हटा सकते हैं) यह काम करते हैं और इस बात से सहमत इस सवाल का बंद किया जा सकता बनाने में कामयाब रहे।
मुझे वास्तव में पता था कि संग्रह में एक निश्चित वस्तु से कैसे जुड़ना है, लेकिन यह वह जगह नहीं थी जहां मैं उलझन में हूं। मुझे लगा कि मुझे ContentControl
का उपयोग करना चाहिए क्योंकि एक उत्तर से पता चलता है। लेकिन मैंने सोचा क्योंकि मुझे संग्रह में वस्तुओं की संख्या के आधार पर उचित संग्रह (0-) का चयन करने के लिए पूरे संग्रह (एक अनुक्रमित आइटम पर नहीं) से जुड़ना होगा और का चयन करने के लिए DataTemplateSelector
का उपयोग करना होगा। कोड इस तरह दिखेगा:
<ContentControl Content="{Binding MyCollection}"
ContentTemplateSelector="{StaticResource MyTemplateSelector}" />
और MyTemplateSelector
में मैं के बाद से वहाँ मेरे संग्रह के लिए कोई संदर्भ है, क्योंकि यह संसाधन के रूप में परिभाषित किया गया है कि यह कैसे उपयोग करने के लिए यकीन नहीं था और यह MyCollection
की जानकारी नहीं है । हालांकि, यह बहुत आसान साबित हुआ, DataTemplate
नाम या किसी अन्य संदर्भ को जानने के बिना अनुक्रमित आइटम का संदर्भ ले सकता है। सीधे शब्दों में इस तरह: एक संपत्ति के लिए बाध्य करने के लिए
{Binding Items[0]}
या:
<DataTemplate>
<TextBlock Text="{Binding [0].PropertyName}" />
<DataTemplate />
संभावित डुप्लिकेट [डब्ल्यूपीएफ बाध्यकारी संग्रह में वस्तुओं को प्रमाणित करने के लिए बाध्यकारी] (http://stackoverflow.com/questions/1715478/wpf-binding-to-certains-items-in-collection) – Jon
यदि इनमें से किसी एक उत्तर ने आपकी सहायता की अपनी समस्या का समाधान करने के लिए, कृपया इसे स्वीकार करें, ताकि इस प्रश्न को उत्तर के रूप में चिह्नित किया जा सके। – Sheridan