2015-03-01 6 views
5

के साथ काम कर रहे xamarin फॉर्म क्या किसी के पास कोई कोड नमूने है जो एक ही प्रोजेक्ट में xamarin रूपों और mvvmcross दोनों दृश्यों का उपयोग करके आईओएस और/या एंड्रॉइड देशी ऐप दिखाता है?mvvmcross

मैं एक ViewModel में उदाहरण के लिए दोनों

का उपयोग कर एक या दूसरे, लेकिन कोई भी साथ नमूना क्षुधा के बहुत सारे मिल गया जब मैं फोन:

this.ShowViewModel<MyCustomViewModel>(); 

अपने iOS परियोजना में मैं करने में सक्षम होना चाहता हूँ एक xamarin फॉर्म ContentPage या एक mvvmcross MvxViewController बनाने की क्षमता।

अर्थात मेरे आम परियोजना में मैं बहुत अच्छा होगा दोनों xform बार देखा गया है और मेरे और अधिक जटिल विचारों जहां XForms पर्याप्त समृद्ध नहीं है, mvvmcross विचारों

किसी भी कोड नमूने या GitHub परियोजनाओं के लिए, होगा। मैंने पहले से ही हर जगह खोज की है!

+0

मैं Xamarin.Forms ऐप्स के लिए एमवीवीएमसीआरओएस का उपयोग करने की अनुशंसा नहीं करता, क्योंकि Xamarin.Forms ढांचे में अंतर्निहित एमवीवीएम उपकरण हैं। https://developer.xamarin.com/guides/xamarin-forms/xaml/xaml-basics/data_bindings_to_mvvm/ –

उत्तर

1

मेरे पास महीनों पहले के समान विचार जोड़े थे, क्योंकि मुझे वास्तव में एमवीवीएमक्रॉस अवधारणा पसंद है, और निश्चित रूप से एकीकृत 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 की भी सिफारिश करना चाहूंगा।

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