Mcx Full Binding 未在主线程上更新

MvxFullBinding not updating on MainThread

对于 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 长寿:-)

INotifyPropertyChanged 实现的工作是将通知放入 UI 线程

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