2017-10-21 81 views
0

我是新來MVVMCross框架,Android和有如何啓用/禁用按鈕的麻煩。我無法在這個區域找到文檔。 MVVMCross Android的按鈕使

代碼視圖模型:

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,那麼應該禁用按鈕。我哪裏錯了?

但願我不會推動這一點,但我可以添加額外的約束它,因此,如果它被禁用或啓用我可以改變按鈕的顏色?

回答

2

你只需要更改綁定語法如下:

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

我不知道,如果你這樣做是因爲你的代碼不顯示的一切,但你也將需要調用RaisePropertyChanged(() => ButtonEnabled);內你的EmailLogin屬性的設置者。

此外,如果你想改變你的按鈕的顏色,你可以安裝official color plugin。用法是這樣的:

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

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

+0

謝謝你,它一直:d。我的EmailLogin的RaisePropertyChange被設置爲自己(EmailLogin)。感謝有關顏色的其他信息。你會如何設定顏色?它是否使用整數RGB實例化MyColor? –

+0

太棒了!是的,你可以使用RGB實例化一個,或者你可以找到一些預定義的顏色,比如'MvxColors.Red'。確保你的方式對你的核心和平臺項目安裝包:) – nmilcoff

+0

優秀的,謝謝老兄:)只注意到你的XML綁定,它指出TEXTCOLOR MyColor,如果它的backgroundColor而不是TEXTCOLOR會是簡單的地方:MvxBind = 「啓用ButtonEnabled; BackgroundColor MyColor」 –