2016-06-06 40 views
1

我不知道我怎麼會能夠能夠在EditText禁用編輯功能在mvvmcross的EditText編輯功能在MVVMCross

<EditText 
    style="@style/InputNumbersEditText" 
    android:layout_weight="1" 
    android:layout_width="0dp" 
    android:focusable="true" 
    android:layout_height="wrap_content" 
    android:inputType="numberDecimal|numberSigned" 
    local:MvxBind="Text Age" /> 

回答

3

由於android:editable="false"deprecated,你應該設置android:inputType="none"EditText禁止輸入。如果您想要將EditTextinputType與MvvmCross綁定,您可以創建一個Value Converter,它從您的ViewModel獲取輸入值,並返回Android.Text.InputTypes類型的答案。

實現示例:

添加類到你的Android項目,在它的下面:

public class EditTextEnabledValueConverter : MvxValueConverter<bool, InputTypes> 
{ 
    protected override InputTypes Convert(bool value, Type targetType, object parameter, CultureInfo culture) 
    { 
     if (value) 
      return InputTypes.ClassNumber | InputTypes.NumberFlagDecimal | InputTypes.NumberFlagSigned; 

     return InputTypes.Null; 
    } 
} 

,並在您的佈局文件:

<EditText 
    style="@style/InputNumbersEditText" 
    android:layout_weight="1" 
    android:layout_width="0dp" 
    android:focusable="true" 
    android:layout_height="wrap_content" 
    local:MvxBind="Text Age; InputType EditTextEnabled(MyProperty)" /> 

其中myProperty的是您的ViewModel上的可綁定布爾值。您可以使用任何類型作爲源類型,它不一定是布爾值。開心轉換!

+0

可否請您舉例說明一個代碼示例? – hotspring

+0

當然,我會在一秒內編輯我的帖子。 –

+0

它工作得很好。但鍵盤不是數字或小數。它是默認的字母鍵盤顯示。 – hotspring