2010-05-05 10 views
9

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

.. और दृश्य विंडोज डेस्कटॉप अनुप्रयोग विकास (वीबी 6, बोर्लैंड सी ++ बिल्डर वीसीएल, विनफॉर्म) (जो भूलना मुश्किल है) के साथ कई वर्षों का अनुभव है, मैं अच्छी तरह से गठित WPF अनुप्रयोगों को कहने के लिए कैसे विकसित हो सकता हूं विजुअल स्टूडियो के साथ?

मुझे हॉलीवुड ब्लॉकबस्टर या दस लाख डॉलर पजामा के ऐप को देखने और महसूस करने के लिए बूज़ी-वूजी ग्राफिक्स की आवश्यकता नहीं है। मुझे हमेशा मानक विंडोज सामान्य नियंत्रण और यूआई डिज़ाइन दिशानिर्देशों की विनम्रता से प्यार था, और भी अंत में मैंने उन्हें Vista ग्लास एयरो ग्रेफाइट सॉस के तहत आनंद लिया।

मैं WinForms से पूरी तरह से संतुष्ट हूं लेकिन मैं अपने अनुप्रयोगों को आज और कल के सबसे कुशल और लचीले पैटर्न के अनुसार सबसे कुशल और अद्यतित मानक तकनीकों और वास्तुकला के निर्माण के लिए चाहता हूं, इंटरफ़ेस-आधारित का लाभ उठा रहा हूं एकीकरण और कार्यक्षमता पुन: उपयोग और प्रदर्शन, प्रयोज्यता, विश्वसनीयता, रखरखाव, विस्तारशीलता इत्यादि को अधिकतम करने के लिए आधुनिक हार्डवेयर और एपीआई के सभी फायदों को लेने के लिए

मुझे दृश्य, तर्क और डेटा को अलग करने के विचार को बहुत पसंद है, मंच के सभी फायदे लें (क्या यह एक पतली ग्राहक पर एक वेब ब्राउज़र एप्लेट के रूप में या एक नवीनतम जीपीयू के साथ एक पीसी पर डेस्कटॉप एप्लिकेशन के रूप में चलाया जा सकता है), तर्क को पुन: उपयोग करने, समांतर और निर्बाध रूप से विकसित करने, एक अच्छी संरचना में डेटा संग्रहीत करने के लिए एक सही जगह में एड प्रारूप।

लेकिन ... वीबी 6 से बोर्लैंड सी ++ बिल्डर तक जाने के दौरान बहुत आसान था (इसे चालू करने और काम शुरू करने के लिए आवश्यक कोई पुस्तकें/ट्यूटोरियल नहीं) (मान लीजिए कि मुझे पहले से ही सी ++ पता था), बीसीबी से विनफॉर्म तक चलना एक ही निर्बाध था , यह मुझे कोई स्पष्ट नहीं लगता है कि डब्ल्यूपीएफ के साथ कैसे किया जाए।

तो मैं अपने आप को WinForms डेवलपर से सही तरीके से कैसे बदल सकता हूं और डब्ल्यूपीएफ डेवलपर कर रहा हूं?

+1

+1 न केवल एक दिलचस्प सवाल के लिए है, लेकिन एक बहुत अच्छी तरह से लिखा एक के रूप में अच्छी तरह से। –

उत्तर

2

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

मैं कुछ कमियां

1) वहाँ एक अधिकारी MVVM टूलकिट जैसी कोई चीज नहीं है पता चला। उनमें से बहुत सारे हैं, सभी एक व्यक्ति द्वारा समर्थित हैं। माइक्रोसॉफ्ट द्वारा टूलकिट पर एक शॉट को एक साल पहले बैक बर्नर पर रखा गया था और कोई वीएस -2010 समर्थन नहीं है।

2) एक बहु विंडोज अनुप्रयोग प्रोग्रामिंग, पीछे और आगे के साथ एक साधारण जादूगर की तरह, सादा दुःस्वप्न है। मुझे इनमें से प्रत्येक यूआई एक्शन के लिए एक प्रतिनिधि को परिभाषित करने और प्रत्येक व्यावसायिक कार्रवाई के लिए एक कमांड के साथ एक साफ डिजाइन के साथ मिला, लेकिन फिर भी मुझे लगता है कि यह उचित रूप से एक ढांचे के साथ बहुत अधिक भागीदारी है, और आप अपने परीक्षणों का नतीजा नहीं दिखा सकते इस ग्राहक उत्साह की उम्मीद है।

3) आप एक बटन को डबल क्लिक करने और कुछ कोड जोड़ने की आदत छोड़ देते हैं। यह अपनी प्रकृति के खिलाफ आईडीई का उपयोग करने की एक अजीब भावना छोड़ देता है। मूल रूप से आप विजुअल स्टूडियो का उपयोग टेक्स्ट एडिटर और इंटरफ़ेस डिज़ाइनर के रूप में करते हैं, फिर भी टूल से बहुत मदद के साथ।

तेजी, अब तक कर रहे हैं:

1) दृश्य घटकों को परिभाषित करने के लिए बहुत, लचीला, तेजी से और आसान है और आप वी.एस. और अभिव्यक्ति मिश्रण के बीच चयन कर सकते हैं। एनिमेशन बनाने के लिए सरल हैं।

2) डेटा बाध्यकारी एप्लिकेशन को सरल बनाता है। आप डेटाकॉन्टेक्स्ट और बाइंडिंग को परिभाषित करते हैं और व्यापार तर्क से डेटा को इंटरफ़ेस में स्थानांतरित करने की आवश्यकता नहीं है, जब तक आपके पास प्रदर्शित होने वाली सभी चीज़ों के लिए एक संपत्ति हो।

3) आप इंटरफ़ेस में शून्य से व्यापार तर्क की मात्रा को कम कर सकते हैं।एप्लिकेशन व्यवहार को अपने दिखने से अलग करना आसान है, ताकि आप अपने इंटरफ़ेस को कम प्रयास के साथ दस अलग-अलग तरीकों से त्वचा पर रख सकें और खिड़की खोलने के बिना अपने सभी तर्कों का परीक्षण कर सकें।

4) यदि आपसे पूछते हैं तो आप सिल्वरलाइट के साथ जाने के लिए एक दरवाजा खोलते हैं।

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

टूलकिट, सभी चीजों को माना जाता है, इतना महत्वपूर्ण नहीं है और उनमें से प्रत्येक अच्छी तरह से आपकी सेवा करेगा। असल में कुछ सहायक वर्ग शुरू करने के लिए पर्याप्त हैं और कोई फैंसी जादूगर नहीं हैं, यह आपके ऊपर सम्मेलनों का पालन करने के लिए है।

तर्क में शामिल होने के बाद, आप कुछ घंटों में भी अपना खुद का बना सकते हैं। नकारात्मकता यह है कि आपको इसे अपने तरीके से मोड़ने के लिए वास्तव में अच्छी तरह से समझना होगा।

जैसा कि मैंने ऊपर कहा था, मुझे कोड को साफ रखने के बटन पर क्लिक करने पर एक नया दृश्य दिखाने के लिए बहुत कुछ सीखना पड़ा। the videos cited elsewere on StackOverflow देखने के लिए समय लें, यह आपको समय बचाएगा।

1

इस साल WPF में मिल गया के बाद देखो, मेरे लिए सबसे महत्वपूर्ण बात यह कैसे मॉडल देखें देखें मॉडल पैटर्न का उपयोग करने के लिए तैयार कर रही थी ऐप तर्क से दृश्य को अलग करने के लिए। अंगूठे के सामान्य नियम के रूप में यदि आप पाते हैं कि आप अपने दृश्य के लिए कोड में बहुत सारे कोड डाल रहे हैं तो आप "इसे गलत कर रहे हैं"।

मुझे पता चला कि WinForms पृष्ठभूमि से आ रहा है, मैं कई ईवेंट हैंडलर डाल रहा था और मेरे कोड में सामान कर रहा था। चूंकि मैं एमवीवीएम और डब्ल्यूपीएफ फीचर्स से परिचित हो गया, मैंने पाया कि मैं अपने कोड का बड़ा हिस्सा हटा सकता हूं और दृश्य-मॉडल के लिए बाध्यकारी विचारों के साथ इसे प्रतिस्थापित कर सकता हूं।

http://www.codeproject.com/KB/WPF/TreeViewWithViewModel.aspx

एक बार जब आप डेटा दृश्य MVVM बाइंडिंग प्रदर्शित करने में लटका पाने के लिए शुरू कर दिया है, एक नजर है:

यह जोश स्मिथ से एक है कि मिल में मदद की मुझे MVVM रास्ते पर शुरू कर दिया जैसे लेख था आदेशों और विशेष रूप से आईसीओएमएंड इंटरफ़ेस पर। वे मुख्य तंत्र हैं जिसके द्वारा उपयोगकर्ता की कार्रवाइयां निष्पादित करने के लिए संचालन को ट्रिगर करती हैं। बटन के लिए ऑनक्लिक हैंडलर होने के बजाय, आप XAML में बटन की कमांड प्रॉपर्टी को अपने व्यू-मॉडल में एक संपत्ति से जोड़ते हैं जो आईसीओएमएंड कार्यान्वयन का खुलासा करता है।

मेरे 2c - डोनोवन

4

इस प्रश्न पढ़ें:

डाउनलोड करें और इस Microsoft ट्यूटोरियल के माध्यम से काम: Southridge Hands-on-Lab

चेक इस वीडियो:

और उसके बाद, टैग StackOverflow सवाल पर एक नज़र wpf and mvvm

दोनों के साथ
संबंधित मुद्दे