【发布时间】:2016-02-04 10:01:21
【问题描述】:
原始问题:
我在尝试使用 MVVM Light 将 ViewModel 中的值绑定到 Xamarin Android 中的 TextView 时遇到问题。该值更改一次,然后停止工作。即使 ViewModel 中的对象发生变化并且绑定模式设置为默认值 (OneWay)。
由于业务需求,我需要继续使用 MVVM Light 和 Xamarin Android。
示例:
在我的第一个片段中,我有一个书籍列表,该列表绑定到我的 ViewModel 中的书籍列表。在我的 Viewmodel 中,我有一个名为 CurrentBook 的对象,它会随着列表中的 onclick 事件而变化。
VM.CurrentBook = Books[index];
在我的第二个片段中,我将标题绑定到 TextView
_titleBinding = this.SetBinding(() => VM.CurrentBook.Title, () => TitleTextView.Text);
当前书籍第一次从 NULL 更改为 Book 的实例时,标题会根据需要更改。在第一次更改 VM.CurrentBook = Books[index]; 后,标题保持与第一本书相同。
更新:
我在 Milen Pavlov 的帮助下尝试了几件事, 我试着改成
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'
【问题讨论】:
标签: c# android android-fragments xamarin mvvm-light