MvxFullBinding未在MainThread上更新

时间:2015-04-22 19:58:45

标签: xamarin.android mvvmcross

使用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的长寿: - )

1 个答案:

答案 0 :(得分:1)

INotifyPropertyChanged实现的工作放在UI线程上

MvxViewModelMvxNotifyPropertyChanged类会自动为您执行此操作 - 但如果您实施自己的INotifyPropertyChanged课程,那么您需要确保PropertyChanged在UI线程上引发。