2009-11-20 14 views
17

मैं अपने विंडोज़ रूपों आधारित अनुप्रयोग को फिर से लिखने रहा हूँ और मैं WPF का उपयोग करने के लिए जा रहा हूँ है। एप्लिकेशन बहुत ही ग्राफिकल वातावरण में ड्रैग और ड्रॉप तकनीकों पर भारी निर्भर करता है। तत्वों को एक ग्रिड पर खींचकर, "डिज़ाइन" रिपोर्ट इत्यादि का उपयोग करता है, उन्हें स्थानांतरित करता है, प्रॉपर्टी सेट आदि पर राइट क्लिक करें, जिनमें से सभी डेटाबेस में सहेजे जाते हैं। रूटिंग और डेसीशन बनाने के साथ प्रवाह चार्ट ड्राइंग करके कार्यक्रम प्रवाह को भी नियंत्रित करें, सभी फॉर्म पर खींचे गए हैं, और फिर डेटाबेस में सहेजते हैं।MVVM करने के लिए या MVVM के लिए नहीं है कि प्रश्न

करता MVVM आवेदन के इस प्रकार के लिए खुद को उधार दे, या मैं एक वर्ग छेद में एक दौर खूंटी फिट करने के लिए कोशिश कर रहा हूँ।

आपके विचारों की सराहना की जाती है।

उत्तर

24

मेरे ले MVVM उपयोग करने के लिए है, लेकिन धार्मिक नहीं।

मेरा मतलब है, अपने विचारों के लिए एक मॉडल का उपयोग करें, लेकिन आवश्यकता होने पर कुछ कोड का भी उपयोग करें (खींचें & ड्रॉप, डबल-क्लिक करें)। एक संतुलन पाएं जो आपके विकास में मदद करता है, बिना पागल किए।

+0

धन्यवाद, मुझे लगता है कि मिश्रण क्रम में है। कमांड, बाइंडिंग और डाटाबेस हैंडलिंग के लिए एमवीवीएम सिद्धांतों के साथ चिपकने का प्रयास करें, लेकिन अधिक जटिल UI इंटरैक्शन को संभालने के लिए कुछ कोड पीछे रखें। – Tim

5

MVVM ही WPF के लिए बहुत अच्छी तरह से बख्शी है। क्या आप डब्ल्यूपीएफ और एमवीवीएम के साथ ड्रैग-ड्रॉप कर सकते हैं? जरूर आप कर सकते हो। "WPF ड्रैग ड्रॉप व्यवहार" की खोज करने का प्रयास करें

1

यदि आप लंबी अवधि में एप्लिकेशन रखरखाव और टेस्टेबिलिटी की तलाश में हैं, तो सुनिश्चित करें कि आप एमवीवीएम और डब्ल्यूपीएफ के साथ यह सामान कर सकते हैं। या फिर बस WPF के साथ जाओ। एमएमवीएम प्रारंभिक सीखने की वक्र बहुत खड़ी है।

+0

धन्यवाद, मुझे लगता है कि मिश्रण क्रम में है। कमांड, बाइंडिंग और डाटाबेस हैंडलिंग के लिए एमवीवीएम सिद्धांतों के साथ चिपकने का प्रयास करें, लेकिन अधिक जटिल UI इंटरैक्शन को संभालने के लिए कुछ कोड पीछे रखें। – Tim

3

वहाँ दो वास्तव में अच्छा MVVM साथ जाने के लिए कारण हैं:

  1. यह आप का उत्पादन व्यापार तर्क और डेटा का उपयोग कोड है कि और अधिक आसानी से इकाई का परीक्षण किया
  2. बहुत कम किसी अतिरिक्त प्रयास के है में मदद करता है, सभी अपने UX के मिश्रण में संशोधित करने के लिए आसान होना चाहिए

के रूप में कई पोस्टर metioned है, UX से संबंधित किसी भी इवेंट code- में संभाला जा सकता है पीछे, लेकिन आपको अपने दृश्यों में आसान बाध्यकारी के लिए अपने व्यू मॉडल के माध्यम से डेटा को उजागर करना और एक्सेस करना (पढ़ना और लिखना) होना चाहिए।

अतिरिक्त प्रयास मैं # 2 में निर्दिष्ट के रूप में, आप आसानी से एक स्थिर संपत्ति अपने अनुप्रयोग ऑब्जेक्ट के लिए करता है, तो आवेदन बनाम एक दृश्य मिश्रण में खोला जा रहा चल रहा है निर्धारित करने के लिए जोड़ सकते हैं। यदि दृश्य ब्लेंड में खुला है, डेटा एक्सेस कॉल करने के बजाय नकली डेटा का लाभ उठाएं। यहां कुछ नमूना कोड है जो यह देखने के लिए काम करता है कि क्या ब्लेंड में एक दृश्य खुला है:

if (Application.Current == null || Application.Current.GetType() == typeof(Application)) 
{ 
    isInDesignMode = true; 
} 
else 
{ 
    isInDesignMode = false; 
} 

आशा है कि इससे मदद मिलती है।

+0

आपके उत्तर के लिए धन्यवाद। मैं मिश्रण से परिचित नहीं हूँ। लर्निंग ब्लेंड, डब्ल्यूपीएफ और एमवीवीएम सिद्धांत एक सीखने की अवस्था के लिए महान हो सकते हैं। – Tim

0

पैटर्न MVVM की तरह जीवन को सरल बनाने के लिए है। तो किसी भी मामले के लिए यदि आपको लगता है कि पैटर्न आपको कठिन समय दे रहा है, तो इसे तोड़ने या कुछ और करने का प्रयास करें। कुछ भी अंधेरे से आपकी मदद नहीं करेगा। लेकिन वैसे भी एमवीवीएम ड्रैग एंड ड्रॉप जैसे जटिल यूआई इंटरैक्शन का भी समर्थन करता है, मेरा मानना ​​है कि व्यवहार इस पर आपकी मदद कर सकते हैं। WPF ड्रैग & ड्रॉप व्यवहार के लिए Google पर खोजें और आपको इस पर सहायता करने के लिए बहुत सारे ट्यूटोरियल और कोड मिल सकते हैं।

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