मैं एक डब्ल्यूपीएफ एप्लीकेशन लागू कर रहा हूं जो वस्तुओं की एक सूची प्रदर्शित करता है, और टेक्स्टबॉक्स में टाइप करके इस सूची को फ़िल्टर करने की कार्यक्षमता प्रदान करता है (मुझे लगता है कि काफी मामूली उपयोग केस)।एमवीपी/एमवीवीएम - सूचियों का फ़िल्टरिंग, किसकी ज़िम्मेदारी है?
हम एक एमवीवीएम संरचना का उपयोग कर रहे हैं।
मेरा प्रश्न है, किसकी जिम्मेदारी सूची को फ़िल्टर करना है? दृश्य या दृश्यमान? क्या मुझे xaml.cs में "ऑनटेक्स्ट चेंज" ईवेंट लागू करना चाहिए, या मुझे ViewModel में एक संपत्ति का उपयोग करना चाहिए और सूची फ़िल्टर करने के लिए PropertyChanged का उपयोग करना चाहिए।
फॉलो-अप प्रश्न है, क्या मुझे व्यूमोडेल में बाइंडिंगलिस्ट/ऑब्जर्जेबल कोलेक्शन का उपयोग करना चाहिए, या आइटम्स कंट्रोल को बाध्य करने के लिए आईसीओलेक्शन व्यू का उपयोग करना चाहिए?
मैंने दोनों विधियों की कोशिश की, और वे दोनों काम करते हैं। ViewModel को देकर जिम्मेदारी को खाली दृश्य से पीछे रखता है, लेकिन दूसरी तरफ मैं पूरी तरह से आश्वस्त नहीं हूं कि यह फ़िल्टरिंग लागू करने के लिए व्यूमोडल्स की ज़िम्मेदारी है (उदाहरण के लिए: अलग-अलग विचारों को अलग-अलग फ़िल्टरिंग की आवश्यकता हो सकती है)
कोई विचार ?
धन्यवाद, रोएल
संपादित करें:
कि क्या मुझे ViewModel में डालने के बारे में परेशान है (मेरे वर्तमान कार्यान्वयन में) वहाँ एक संदर्भ System.Windows.Data है। यह एक संदर्भ है जो मुझे व्यूमोडेल में नहीं है क्योंकि यह स्पष्ट रूप से कुछ संबंधित है। या क्या मैं कुछ न कुछ भूल रहा हूं? प्रासंगिक कोड:
ICollectionView customerView = CollectionViewSource.GetDefaultView(customers);
यह एक अच्छा सवाल है, खासकर व्यूमोडेल के बारे में 'System.Windows.Data' के संदर्भ की आवश्यकता है। – pauldoo