使用MvvmCross 3.5.1,我发现在android布局绑定描述中使用MvxFullBinding时,不会在MainThread上调用UpdateTargetFromSource方法。 这是故意的吗?我认为它的行为与RaisePropertyChanged相同。
给出这样的完全绑定:
<TextView
style="@style/ValueText"
local:MvxBind="Text SelectedObject.Name" />
包含所选对象的视图模型:
public IMyObject SelectedObject { get; }
所选对象实现INotifyPropertyChanged的位置。
如果从应用程序中的另一个线程通知Name
属性更改,则更新将无效并且将引发MainThread
异常:android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
感谢您的帮助,以及对MvvmCross的长寿: - )
答案 0 :(得分:1)
将INotifyPropertyChanged
实现的工作放在UI线程上
MvxViewModel
和MvxNotifyPropertyChanged
类会自动为您执行此操作 - 但如果您实施自己的INotifyPropertyChanged
课程,那么您需要确保PropertyChanged
在UI线程上引发。