首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MVVMCross MvxBind,将多个值绑定到一个属性

MVVMCross MvxBind,将多个值绑定到一个属性
EN

Stack Overflow用户
提问于 2014-02-26 09:51:18
回答 2查看 2.2K关注 0票数 3

如何使用布尔值的组合来在enabled按钮上设置MvxBind属性?

例如:

使用一个布尔值,通过以下方法实现绑定:

代码语言:javascript
复制
<Button
      android:text="Next"
      local:MvxBind="Enabled IHaveDoneEverything"/>

但是如何使用多个布尔值来实现这一点呢?

我尝试过的那些没用的东西:

  • 在axml中使用OR语句。local:MvxBind="Enabled (IHaveDoneThis | IHaveDoneThat)"
  • 在我的ViewModel中使用额外的属性。由于该属性未被“设置”,因此未在视图中更新,因此无法工作。 公共bool IHaveDoneAtleastSomething { get {get (IHaveDoneThis _ IHaveDoneThat);}
  • 使用自定义值转换器。 启用了Converter=MultipleBooleansToOneBooleanUsingORValueConverter"/>,local:MvxBind=,IHaveDoneThat,IHaveDoneThis
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-26 10:04:37

实际解决了这个问题。

代码语言:javascript
复制
local:MvxBind="Enabled (IHaveDoneThis || IHaveDoneThat)"
票数 5
EN

Stack Overflow用户

发布于 2014-02-26 19:54:52

为了便于以后参考,为了使额外的ViewModel属性正常工作,您必须确保每当IHaveDoneThis或IHaveDoneThat更改时,ViewModel都会调用额外属性的RaisePropertyChanged方法,否则绑定不会触发。

我通常做的事情是:

代码语言:javascript
复制
private bool _internalIHaveDoneThis;
public bool IHaveDoneThis
{
    get{return _internalIHaveDoneThis;} 
    set
    {
        if(_internalIHaveDoneThis != value)
        {
            _internalIHaveDoneThis = value; 
            RaisePropertyChanged(() => IHaveDoneThis);
            RaisePropertyChanged(() => IHaveDoneAtleastSomething);
        }
    }
}


private bool _internalIHaveDoneThat;
public bool IHaveDoneThat
{
    get{return _internalIHaveDoneThat;} 
    set
    {
        if(_internalIHaveDoneThat != value)
        {
            _internalIHaveDoneThat = value; 
            RaisePropertyChanged(() => IHaveDoneThat);
            RaisePropertyChanged(() => IHaveDoneAtleastSomething);
        }
    }
}

public bool IHaveDoneAtleastSomething 
{ 
    get { return (IHaveDoneThis | IHaveDoneThat); } 
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22037625

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档