मैं एमवीवीएम डिज़ाइन पैटर्न के दौरान रखते हुए डेटा ग्रिड सेल में परिवर्तनों को संभालने का तरीका जानने का प्रयास कर रहा हूं। जब उपयोगकर्ता किसी सेल में मान बदलता है, तो मुझे नए सेल मान के आधार पर फ़ाइलों का एक समूह बंद करना और बदलना होगा। मुझे पता है कि मैं कोड के पीछे आसानी से ऐसा कैसे कर सकता हूं, लेकिन क्या कमांड बाइंडिंग के साथ ऐसा करने के लिए एक क्लीनर, अधिक एमवीवीएम-एस्क्यू तरीका है?एमवीवीएम के साथ डेटा ग्रिड सेल परिवर्तनों को आप कैसे प्रबंधित करते हैं?
उत्तर
मान लेते हैं अपने DataGrid
के ItemsSource
अपने ViewModel
में ही है, TwoWay
मोड, कुछ करने के लिए करते हैं, चलो यह CustomObject
या जो कुछ भी संपर्क कर सकें।
के तत्कालीन मान लेते हैं कि एक विशिष्ट DataGridCell
SomeProperty
नाम के एक संपत्ति है, जो इस प्रकार है घोषित किया जाता है करने के लिए बाध्य कर रहा है:
private string someProperty;
public string SomeProperty {
get { return someProperty; }
set {
someProperty = value;
//Fire OnPropertyChanged here
}
}
सिर्फ सेट पर एक ब्रेकपाइंट रखो। फिर, अपने दृश्य में सेल को संशोधित करें: ब्रेकपॉइंट पहुंच जाएगा।
यह आपको एक कार्यक्रम अनुकरण करने की अनुमति देता है: प्रत्येक बार सेट कहलाता है, इसका मतलब है कि सेल बदल जाएगा, जो भी आप बदलते प्रक्रिया के साथ अब भी चाहते हैं (उदाहरण के लिए आप value
पर परीक्षण करके नए मान का परीक्षण कर सकते हैं , या someProperty
को लाइन से पहले कहीं भी someProperty
बचाकर)
आमतौर पर मैं गैलासोफ्ट से इंटरैक्शन ट्रिगर्स के साथ ऐसा करता हूं।
<DataGrid IsReadOnly="False">
<e:Interaction.Triggers>
<e:EventTrigger EventName="CellEditEnding">
<GalaSoft_MvvmLight_Command:EventToCommand PassEventArgsToCommand="True" Command="{Binding CellEditEndingCommand}"/>
</e:EventTrigger>
</e:Interaction.Triggers>
<DataGrid.Columns>
...
</DataGrid.Columns>
</DataGrid>
फिर व्यूमोडेल के अंदर आप जेनेरिक रिलेकॉमंड बनाते हैं जहां सामान्य प्रकार संबंधित EventArgs का प्रकार होता है।
RelayCommand<DataGridCellEditEndingEventArgs> CellEditEndingCommand {get; set;}
प्रारंभ:
CellEditEndingCommand = new RelayCommand<DataGridCellEditEndingEventArgs>(args=>DoSomething());
+1 क्योंकि यह आम तौर पर ऐसा करने का तरीका है, हालांकि आपको गैलासोफ्ट के संस्करण का उपयोग करने की आवश्यकता नहीं है। PRISM के पास वीएम कमांड्स को ईवेंट बाध्य करने का भी एक तरीका है, या आप http://marlongrech.wordpress.com/2008/12/04/attachedcommandbehavior-aka-acb/ – Rachel
जैसे कस्टम इम्प्लांटेशन पा सकते हैं या आप एक प्रतिनिधिमंडल आधारित बना सकते हैं CellEditEnding ईवेंट – skjagini
- 1. आप setTimeout() के कई उदाहरणों को कैसे प्रबंधित करते हैं?
- 2. डेटाबेस को मॉडलिंग करते समय आप "विशेष-केस" डेटा को कैसे प्रबंधित करते हैं?
- 3. डेटा के टेराबाइट्स के ऑफ़-साइट बैकअप को आप कैसे प्रबंधित करते हैं?
- 4. आप एक लिंक के साथ डेटा कैसे पोस्ट करते हैं
- 5. आप अपने एसक्यूएल उदाहरणों को कैसे याद/प्रबंधित करते हैं?
- 6. आप अपने एक्सटेंशन विधियों के नामस्थान कैसे प्रबंधित करते हैं?
- 7. आप अपने आईफोन ऐप्स में क्रैश कैसे प्रबंधित करते हैं?
- 8. आप डोजो डेटा ग्रिड में सशर्त रूप से सेल कैसे बनाते हैं?
- 9. आप सी # में निर्धारिक अंतिमकरण कैसे प्रबंधित करते हैं?
- 10. आप डेटाबेस में सेल फोन नंबर कैसे स्टोर करते हैं?
- 11. आप विंडोज सर्वर पर डेवलपर पहुंच कैसे प्रबंधित करते हैं?
- 12. आप डिज़ाइन-टाइम पर एकाधिक टीपीनल कैसे प्रबंधित करते हैं?
- 13. आप उत्पादन डेटाबेस में स्कीमा अपग्रेड कैसे प्रबंधित करते हैं?
- 14. आप नॉकऑट जेएस के साथ गतिशील बाध्यकारी कैसे करते हैं?
- 15. आप सी ++ से प्रबंधित (सी #) फ़ंक्शन कैसे कॉल करते हैं?
- 16. आप php में डेटाबेस कनेक्शन कैसे प्रबंधित करते हैं?
- 17. आप एक WPF ग्रिड व्यू हेडर कैसे शैलीबद्ध करते हैं?
- 18. आप मध्यम आकार के प्रोजेक्ट पर शाखाओं के साथ डेटाबेस संशोधन कैसे प्रबंधित करते हैं?
- 19. एक्सएसएलटी के साथ वाइल्डकार्ड मैचों को आप कैसे करते हैं?
- 20. अभिविन्यास परिवर्तनों को आसानी से कैसे प्रबंधित करें?
- 21. आप डेटाबेस की एकाधिक शाखाओं को नियंत्रित और प्रबंधित कैसे करते हैं?
- 22. विकास के दौरान डेटाबेस कैसे प्रबंधित करते हैं?
- 23. PHP का उपयोग करके तैनाती के दौरान आप लाइब्रेरी निर्भरताओं को कैसे प्रबंधित करते हैं?
- 24. GXT3 ग्रिड सेल प्रतिपादन
- 25. मैं एमवीसी ग्रिड सेल
- 26. क्या आप Xcode 4 में NSArrayController के प्रबंधित ऑब्जेक्ट संदर्भ को बाध्य करते हैं?
- 27. आप wx.Panel को रीफ्रेश कैसे करते हैं?
- 28. गेम सहेजे गए सामग्री को कैसे प्रबंधित करते हैं?
- 29. आप स्रोत नियंत्रण में डेटाबेस परिवर्तनों को कैसे ट्रैक करते हैं?
- 30. आप एक्सएमएल में बाइनरी डेटा कैसे एम्बेड करते हैं?
पर यह मेरे साथ करने का एक उचित तरीका नहीं दिखता है। आम तौर पर, ग्रिड व्यूमोडेल से कुछ संग्रह ऑब्जेक्ट से जुड़ जाएगा, और 'कस्टमऑब्जेक्ट' को आपके मॉडल में परिभाषित किया जाएगा। आप वहां ऐसे परिचालन नहीं कर सकते हैं। इसके अलावा, उपयोगकर्ता संपादन एकमात्र चीज नहीं है जो मॉडल ऑब्जेक्ट गुणों को बदल देगी। –