मुझे सूची सूची के पहले और अंतिम आइटम को अलग-अलग शैली में शैली की आवश्यकता है। इसे प्राप्त करने के लिए, मैंने उस उत्तर के आधार पर समाधान पर काम करना शुरू किया: Use different template for last item in a WPF itemscontrolसूची दृश्य में पहली और आखिरी वस्तु के लिए विशिष्ट आइटम टेम्पलेट
असल में, मेरे पास एक कस्टम आइटम टेम्पलेट चयनकर्ता है जो सूची दृश्य आइटम (नीचे कोड) में आइटम की अनुक्रमणिका के आधार पर लागू करने के लिए टेम्पलेट पर निर्णय लेता है।
यह ठीक से काम करता है सिवाय इसके कि जब सूची अपडेट हो जाती है (एक आइटम जोड़ा या निकाला जाता है), टेम्पलेट्स फिर से नहीं मिलते हैं (उदाहरण के लिए, प्रारंभ में, सिंगलइटम टेम्पलेट का चयन होता है क्योंकि एक ही आइटम होता है। जब मैं जोड़ता हूं सूची में एक आइटम, कि पहले आइटम का टेम्पलेट FirstItemTemplate पर स्विच नहीं किया जाता है)। सभी वस्तुओं के लिए टेम्पलेट चयन को कैसे बल दें?
public class FirstLastTemplateSelector : DataTemplateSelector
{
public DataTemplate DefaultTemplate { get; set; }
public DataTemplate FirstItemTemplate { get; set; }
public DataTemplate LastItemTemplate { get; set; }
public DataTemplate SingleItemTemplate { get; set; }
public override DataTemplate SelectTemplate(object item, DependencyObject container)
{
ListView lv = VisualTreeHelperEx.FindParentOfType<ListView>(container);
if (lv != null)
{
if (lv.Items.Count == 1)
{
return SingleItemTemplate;
}
int i = lv.Items.IndexOf(item);
if (i == 0)
{
return FirstItemTemplate;
}
else if (i == lv.Items.Count - 1)
{
return LastItemTemplate;
}
}
return DefaultTemplate;
}
}
मैं सोच रहा हूँ तुम क्यों Datatrigger के ItemsCount लिए बाइंडिंग का उपयोग कर से तुलना नहीं की और AlternationCount के लिए मूल्य? क्या ऐसा इसलिए है क्योंकि ItemCount एक निर्भरता संपत्ति नहीं है और यह त्रुटि फेंक देगा? या कोई अन्य कारण है? क्योंकि मुझे लगता है कि यह तुलना के बराबर बूलियन होने जा रहा है और हमें कनवर्टर – CarbineCoder
@ रैम्ब 00 की आवश्यकता क्यों है, मैंने इसे आज़माया और पाया: "ए 'बाइंडिंग' को 'डेटा ट्रिगर' प्रकार की 'वैल्यू' प्रॉपर्टी पर सेट नहीं किया जा सकता है" । ऐसा लगता है कि मूल्य निर्भरता नहीं है। –