2013-09-23 7 views
6

में एक व्यूमोडेल बूलियन में एक मोनोचouch यूआई तत्व की 'सक्षम' संपत्ति को बाध्य करने के लिए कैसे करें IV Droid में एमवीवीएमसीआरओएस का उपयोग करके अपना लॉगिन पेज लिखना।एमवीवीएमक्रॉस

यह है कि क्या मैं अब तक

var bindingSet = this.CreateBindingSet<LoginPageView, LoginPageViewModel>(); 
bindingSet.Bind(this.UsernameTextField).To(x => x.UserName).TwoWay(); 
bindingSet.Bind(this.UsernameTextField).For(x=>x.Enabled).To(x => !x.LoggingIn); 
bindingSet.Apply(); 

'उपयोगकर्ता नाम' के बंधन सफलतापूर्वक UsernameTextField को बांधता है। हालांकि, जब LoginCommand निकाल दिया जाता है (ब्रेवटी के लिए बाहर रखा गया है) मैं यूआई नियंत्रण को 'सक्षम = झूठा' के रूप में सेट करने के लिए नहीं था, जबकि लॉगिन दिनचर्या प्रगति पर है।

कोड ऊपर बाध्यकारी x.Enabled पर रन-टाइम में विफल रहता है,

System.ArgumentException: Property expression must be of the form 'x => x.SomeProperty.SomeOtherProperty' 

मैं लिख जाना चाहिए के साथ गलत तरीके से बाध्यकारी, के रूप में मैं सीधे 'सक्षम' संपत्ति के लिए बाध्य करना चाहते हैं, और एक बच्चा नहीं - लेकिन मैं यह नहीं देख सकता कि यह कैसे करें।

मैंने mvvmcross पर कुछ नमूनों को देखा है, और कुछ एन + 1 वीडियो देखे हैं, लेकिन मुझे नमूना मिलान सक्षम नहीं है, या किसी अन्य बच्चे की संपत्ति बाध्यकारी प्रतीत नहीं होती है।

धन्यवाद

उत्तर

10

मैं नहीं देख सकता था क्या अपने कोड के साथ गलत था - लेकिन मैं सिर्फ https://github.com/slodge/Enabling की कोशिश की और कहा कि काम करने के लिए लग रहा था ...

तो मैं फिर से विचार ... और समस्या प्रतिसाद नहीं ले लिया 'टी सक्षम में - के बजाय उस में है:

 To(x => !x.LoggingIn) 

एक सरल संपत्ति अभिव्यक्ति नहीं है यही कारण है कि - यह वहाँ ! ऑपरेटर मिला है।

इसके बजाय ! का उपयोग कर आप की तरह एक ValueConverter उपयोग कर सकते हैं की

:

public class InverseValueConverter : MvxValueConverter<bool, bool> 
    { 
     protected override bool Convert(bool value, ...) 
     { 
      return !value; 
     } 
    } 
फिर

:

bindingSet.Bind(this.UsernameTextField) 
      .For(x=>x.Enabled) 
      .To(x => x.LoggingIn) 
      .WithConversion(new InverseValueConverter(), null); 
+0

कार्य अब अपनी समाधान का उपयोग कर। बहुत ज्यादा लिंक सोच रहा था और पर्याप्त संपत्ति बाध्यकारी नहीं था! धन्यवाद –

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