Xamarin 如何绑定';启用';Mvvmcross中将monotouch UI元素的属性设置为viewmodel布尔值

Xamarin 如何绑定';启用';Mvvmcross中将monotouch UI元素的属性设置为viewmodel布尔值,xamarin,mvvmcross,Xamarin,Mvvmcross,使用MVVMCross在IOS Droid中编写我的登录页面 这就是我目前所拥有的 var bindingSet = this.CreateBindingSet<LoginPageView, LoginPageViewModel>(); bindingSet.Bind(this.UsernameTextField).To(x => x.UserName).TwoWay(); bindingSet.Bind(this.UsernameTextField).For(x=>x.

使用MVVMCross在IOS 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();
我一定是写错了绑定,因为我确实希望直接绑定到'Enabled'属性,而不是一个子道具-但我不太明白如何做到这一点

我查看了mvvmcross上的一些示例,并查看了一些N+1视频,但似乎找不到已启用的示例匹配或其他子属性绑定


谢谢

我看不出你的代码出了什么问题-但我只是尝试了一下,似乎奏效了

所以我又看了一眼。。。问题不在启用中,而是在:

      To(x => !x.LoggingIn)
这不是一个简单的属性表达式-它有
操作员在那里

而不是使用
您可以使用ValueConverter,如:

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

现在使用您的解决方案工作。考虑了太多Linq而没有足够的属性绑定!谢谢
  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);