5

My MvvmCross Android приложение, которое работает до сих пор нарушается из-за обновления MvvmCross от 4.2.3 до 4.4.0Android EditText Binding сломана после обновления MvvmCross от 4.2.3 до 4.4.0 с Linker включен

<EditText 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    local:MvxBind="Text Login" /> 

public string Login 
{ 
    get { return _login; } 
    set { SetProperty(ref _login, value); } 
} 

LinkerPleaseInclude если, конечно, есть:

public void Include(EditText text) 
     { 
      text.Enabled = !text.Enabled; 
      text.TextChanged += (sender, args) => text.Text = "" + text.Text; 
      text.Hint = "" + text.Hint; 
      text.Click += (s, e) => text.Visibility = text.Visibility - 1; 
     } 

     public void Include(TextView text) 
     { 
      text.TextChanged += (sender, args) => text.Text = "" + text.Text; 
      text.Hint = "" + text.Hint; 
      text.Click += (s, e) => text.Text = text.Text + ""; 
     } 

Linker "SDK только" включен. Для инвалидов-линкеров он отлично работает. Другие привязки отлично работают (щелчки на кнопках, видимость и т. Д.).

Как сказать компоновщику, чтобы справиться с этим правильно? Что здесь может быть неправильным?

+1

Связывание использует событие AfterTextChanged, а не TextChanged – Cheesebaron

+0

. Фактически это связано с обновлением TargetPlatform от 6 до 7, которое вносило некоторые изменения в компоновщик и, как следствие, сбойное связывание для EditText. Добавление 'AfterTextChanged' в LinkerPleaseInclude исправило проблему. Благодаря! Пожалуйста, напишите свой комментарий как ответ, и я помету его как ответ. –

+0

@AlexeyStrakh - есть ли в документации Mvvmcross список того, какие свойства были повреждены в результате изменения компоновщика, или это единственный? –

ответ

14

Объект привязки для EditText и TextView использует событие AfterTextChanged, возможно, связано с ним. Добавим, что ваш Включать методы вместо TextChanged и он должен работать:

public void Include(TextView text) 
{ 
    text.AfterTextChanged += (sender, args) => text.Text = "" + text.Text; 
    text.Hint = "" + text.Hint; 
    text.Click += (s, e) => text.Text = text.Text + ""; 
} 

Я не думаю, что вам нужен отдельный метод EditText как EditText наследуется от TextView.