【问题标题】:MVVMCross Android button enableMVVMCross Android 按钮启用
【发布时间】:2018-04-02 12:06:43
【问题描述】:

我是 Android 的 MVVMCross 框架的新手,在如何启用/禁用按钮方面遇到了麻烦。我无法找到有关该区域的文档。

代码视图模型:

    private bool _buttonEnabled;
    public bool ButtonEnabled
    {
        get
        { return string.IsNullOrEmpty(EmailLogin);}
        set
        {
            _buttonEnabled = value;
            RaisePropertyChanged(() => ButtonEnabled);
        }
    }

Android axml:

 <Button
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="@string/Login"
    android:background="@color/yellow"
    local:MvxBind="Enabled(ButtonEnabled)"/>

但无法让它工作。我想要实现的是,如果 EmailLogin 变量为 NullOrEmpty,则应禁用按钮。我哪里错了?

希望我没有推动这个,但我可以添加额外的绑定,以便如果它被禁用或启用,我可以更改按钮的颜色?

【问题讨论】:

    标签: xamarin.android mvvmcross


    【解决方案1】:

    您只需将绑定语法更改为:

     <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/Login"
        android:background="@color/yellow"
        local:MvxBind="Enabled ButtonEnabled"/>
    

    我不知道您是否正在这样做,因为您的代码并未显示所有内容,但您还需要在 EmailLogin 属性的设置器中调用 RaisePropertyChanged(() =&gt; ButtonEnabled);

    另外,如果你想改变按钮的颜色,你可以安装official color plugin。用法是这样的:

    private MvxColor _myColor;
    public MvxColor MyColor
    {
        get
        {   return _myColor; }
        set
        {
            _myColor = value;
            RaisePropertyChanged(() => MyColor);
        }
    }
    

    然后:local:MvxBind="Enabled ButtonEnabled; TextColor MyColor"

    【讨论】:

    • 谢谢,它已经成功了:D。我的 EmailLogin 的 RaisePropertyChange 设置为它自己 (EmailLogin)。感谢您提供有关颜色的其他信息。你会如何设置颜色?它是用整数 RGB 实例化 MyColor 吗?
    • 太棒了!是的,您可以使用 RGB 来实例化一个,或者您可以找到一些预定义的颜色,例如 MvxColors.Red。顺便确保你在你的核心和平台项目上安装了这个包:)
    • 太好了,谢谢老兄:) 刚刚注意到您的 xml 绑定,它声明 TextColor MyColor,如果它的 backgroundColor 而不是 TextColor,它会简单地作为 local:MvxBind="Enabled ButtonEnabled; BackgroundColor MyColor"
    • 抱歉打扰了,但我是否需要在 EmailLogin 上调用 RaisePropertyChanged 中的 MvxColor 变量才能获取已启用的按钮颜色更改?
    • 没问题!是的,您可以在设置器中为您的颜色添加 RaisePropertyChanged(不要删除 ButtonEnabled 的提升,在其后添加新的提升)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-08
    • 1970-01-01
    • 1970-01-01
    • 2013-12-01
    • 2014-10-06
    相关资源
    最近更新 更多