मेरे पास महीनों पहले के समान विचार जोड़े थे, क्योंकि मुझे वास्तव में एमवीवीएमक्रॉस अवधारणा पसंद है, और निश्चित रूप से एकीकृत UI के लिए XForms का उपयोग करने का लाभ।
एमवीवीएमक्रॉस सामान्य तर्क (साझा परियोजना) के साथ ऐप बनाने के लिए बहुत अच्छा है, और विभिन्न परियोजनाओं में यूआई रखने (आईओएस & एंड्रॉइड)।
हालांकि, इसकी आवश्यकता नहीं है, क्योंकि सभी यूआई एक साझा परियोजना में संग्रहीत हैं, और नेविगेशन और अन्य सभी एमवीवीएम पैटर्न आसानी से एमवीएमएमलाइट के साथ हासिल किए जा सकते हैं (this post देखें)।
ऐसे मामलों में जहां आप एक विशिष्ट प्लेटफ़ॉर्म में एक अलग यूआई रखना चाहते हैं, Xamarin रूपों ने Renderers नामक एक नई अवधारणा पेश की - जहां आप मूल UI UI capabilties का आह्वान कर सकते हैं, जैसा कि आपने XForms से पहले दो अलग-अलग UI घटकों में किया होगा।
रेंडरर में उपयोग का एक उदाहरण (Xamarin नमूना से लिया गया):
अपने साझा परियोजना में, आप आईओएस में अलग लग रहे के साथ एक कस्टम प्रवेश करना चाहते हैं, तो आप इस वर्ग पैदा हो जाएगी:
public class MyEntry : Entry {}
और अपने iOS कोड में, आप कुछ इस तरह करना चाहते हैं:
[assembly: ExportRenderer (typeof (MyEntry), typeof (MyEntryRenderer))]
public class MyEntryRenderer : EntryRenderer
{
// Override the OnElementChanged method so we can tweak this renderer post-initial setup
protected override void OnElementChanged (ElementChangedEventArgs<Entry> e)
{
base.OnElementChanged (e);
if (Control != null) { // perform initial setup
// do whatever you want to the UITextField here!
Control.BackgroundColor = UIColor.LightGray;
Control.BorderStyle = UITextBorderStyle.Line;
}
}
}
के बाद आप MVVM प्रकाश से परिचित हो जाएगा, तो आप देखेंगे कि viewMo के बीच नेविगेशन dels एक घटक INavigationService
यहाँ बुलाया द्वारा किया जाता है मेरी ऐप्स का कोड स्निपेट है:
_navigationService.NavigateTo("UserDetailsPage", user);
मैं जो एक पेज है कि एक उपयोगकर्ता सूची शामिल है का प्रतिनिधित्व करता है एक दृश्य के मॉडल, के संदर्भ में हूँ, और जब कोई विशिष्ट उपयोगकर्ता चुना जाता है, तो मैं कुंजी 'UserDetailsPage' के साथ नेविगेशन सेवा पर कॉल कर रहा हूं, जो पृष्ठ के लिए कॉन्फ़िगरेशन में पंजीकृत है, जिसे पैरामीटर 'उपयोगकर्ता' भी प्राप्त होता है।
मैं एमवीवीएमलाइट के सर्वोत्तम प्रस्ताव को कैप्चर करने के लिए this video की भी सिफारिश करना चाहूंगा।
मैं Xamarin.Forms ऐप्स के लिए एमवीवीएमसीआरओएस का उपयोग करने की अनुशंसा नहीं करता, क्योंकि Xamarin.Forms ढांचे में अंतर्निहित एमवीवीएम उपकरण हैं। https://developer.xamarin.com/guides/xamarin-forms/xaml/xaml-basics/data_bindings_to_mvvm/ –