Intereting Posts
Доступ к андроиду: атрибут installLocation manifest Проблема преобразования DateFormat в java? Получение экземпляра коммутатора внутри ActionBar В чем разница между Android 4.4W (API20) и Android L (API20, L Preview) в SDK Manager? Profile.getCurrentProfile () возвращает значение null после входа в систему (FB API версии 4.0) Отсутствует значок приложения панели действий с Android 5 Должны ли пользователи предоставлять разрешение com.android.vending.BILLING при обновлении / установке? Android Market скрывает мое приложение на некоторых планшетах (например, Nexus 7) ProfilePictureView для Bitmap (Facebook SDK для Android v3) Совет: реализация SlidingMenu на Android (J. Feinstein) Принудительное обновление приложения для Android, когда доступна новая версия Получать значения атрибутов по умолчанию из темы Android во время выполнения? Android OkHttp как обращаться с ETag Как создать правильный прослушиватель волейбола для вызова метода Volley класса Откройте html-файл, расположенный внутри моего приложения, используя WebView

Xamarin Android Data-Binding с подсветкой MVVM

Оригинальный вопрос:

У меня проблема с привязкой значения из моего ViewModel к TextView в Xamarin Android с использованием MVVM Light. Значение изменяется один раз, а затем перестает работать. Даже если объект изменяется в ViewModel, а режим привязки установлен на значение по умолчанию (OneWay).

Из-за требований бизнеса я должен продолжать использовать MVVM Light и Xamarin Android.

Пример:
В моем первом фрагменте у меня есть список книг, которые привязаны к списку книг в моей модели ViewModel. В моей модели Viewmodel у меня есть объект CurrentBook, который изменяется с событием onclick в моем списке.

VM.CurrentBook = Books[index]; 

В моем втором фрагменте у меня есть заголовок, связанный с TextView

 _titleBinding = this.SetBinding(() => VM.CurrentBook.Title, () => TitleTextView.Text); 

В первый раз, когда текущая книга изменяется с NULL на экземпляр книги, название изменяется по желанию. После первого раза при изменении VM.CurrentBook = Books [index]; Название остается таким же, как и первая книга.


Обновить:

Я попробовал пару вещей с помощью Милена Павлова , я попытался перейти на

 VM.SetBinding(() => VM.CurrentBook.Title, TitleTextView, () => TitleTextView.Text, BindingMode.TwoWay); 

Это вызывает ошибку:

 System.Reflection.TargetException: Object of type '[Solution].Client.Shared.ViewModels.BooksViewModel' doesn't match target type '[Solution].Client.Android.BookDetailsFragment' 

Еще одна вещь, которую я пробовал:

 _titleBinding = this.SetBinding(() => VM.CurrentBook.Title, TitleTextView, () => TitleTextView.Text, BindingMode.TwoWay); enter code here 

Это вызывает еще одну ошибку:

 System.Reflection.TargetException: Object of type 'Android.Support.V7.Widget.AppCompatTextView' doesn't match target type '[solution].Client.Android.BookDetailsFragment' 

Я использовал эту перегрузку, когда привязка данных к xamarin android и mvvm-light:

 VM.SetBinding(() => VM.CurrentBook.Title, TitleTextView, () => TitleTextView.Text, BindingMode.TwoWay); 

Надеюсь, поможет.